使用数据集更新数据库时出错

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

【讨论】:

以上是关于使用数据集更新数据库时出错的主要内容,如果未能解决你的问题,请参考以下文章

运行更新数据库时出错

使用 Matlab 更新 MS Access 时出错

使用 DataGrid 更新访问表时出错

如何在更新数据库时更新数据集

当我尝试从 firebase 更新数据时出错

vb.net 解析查询灵活列名时出错