使用数据集更新数据库时出错
Posted
技术标签:
【中文标题】使用数据集更新数据库时出错【英文标题】:Error while updating in database using dataset 【发布时间】:2013-05-09 12:40:42 【问题描述】:运行以下代码时出现此错误
不支持为 UpdateCommand 生成动态 SQL 一个不返回任何键列信息的 SelectCommand。
尝试了很多事情,但没有任何效果。下面是代码
string queryUp = "SELECT Node_A_ObjectID,Node_Z_ObjectID FROM NDDILinks";
string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data source=D:\TiptonDB.mdb";
DataSet dtup = new DataSet();
using (OleDbConnection myConnection = new OleDbConnection())
myConnection.ConnectionString = myConnectionString;
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = myConnection;
myConnection.Open();
OleDbDataAdapter adp = new OleDbDataAdapter(queryUp, myConnection);
adp.FillSchema(dtup, SchemaType.Source, "NDDILinks");
adp.Fill(dtup, "NDDILinks");
dtup.Tables[0].Rows[1][0] = 2350;
adp.AcceptChangesDuringUpdate = true;
OleDbCommandBuilder objCommandBuilder = new OleDbCommandBuilder(adp);
cmd.Parameters.Add("@Node_A_ObjectID", OleDbType.Integer, sizeof(int), "Node_A_ObjectID");
int a1 = adp.Update(dtup, "NDDILinks");
dtup.AcceptChanges();
【问题讨论】:
您确定要从表中选择主键NDDILinks
吗?还要确保你已经在你的表中定义了键。
我没有选择主键只有 2 个值 Node_A_ObjectID,Node_Z_ObjectID。我还需要选择主键吗?是的,我的表有主键
【参考方案1】:
我没有选择主键,只有 2 个值 Node_A_ObjectID,Node_Z_ObjectID。我还需要选择主键吗?
根据您对该帖子的评论。您必须为您的 UPDATE 选择主键才能使用数据集,或者您可以指定自己的 UPDATE 或 INSERT 查询。您还可以在 MSDN 上看到 this discussion
【讨论】:
以上是关于使用数据集更新数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章