如何解决错误“ UpdateCommand已影响1个预期条目中的0个。”?

时间:2018-12-01 08:48:42

标签: c# winforms ado.net devexpress

使用者:
 -MSAccess2016。
 -在数据库表中形成自动递增的“ ID”。
 -DevExpress。
 -gridControl。

将新条目添加到“ gridControl1”后,需要从数据库添加“ ID”。

场景_1:
-用户。填写必填字段; -用户。将焦点转移到“ gridControl1”;
- 该程序。将新条目添加到“ gridControl1”-“ Record_1”;
- 该程序。使用Row_Changed事件,我们将条目“ Record_1”添加到“数据库”中;
- 该程序。从数据库中获取ID“ Record_1”;
- 该程序。为新条目“ Record_1”更新“ DataTable”中的ID;

执行脚本“ Scenario_1”后,用户尝试更新新记录的任何字段。
方案_2:
-用户。更改输入字段“ Record_1”;
-用户。将焦点转移到另一个条目;
- 该程序。产生错误“ UpdateCommand已影响1个预期条目中的0个。”

如何解决错误“ UpdateCommand已影响1个预期条目中的0个。”

enter image description here enter image description here enter image description here enter image description here

已添加
发生错误时的状态 enter image description here

   public void connect()
{
            string catBD = @"z:\vs\csharp\prb\718\01_pr\01_pr\01_pr\718.01.01.accdb";
            string conBD = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", catBD);

            connection = new OleDbConnection(conBD);
            connection.Open();          

            string query1 = "SELECT * FROM TableGrid_00";            

            OleDbCommand cmd1 = new OleDbCommand(query1, connection);

            dt = new DataTable();

            try
            {
                adapter = new OleDbDataAdapter(cmd1);
                 cmdBuilder = new OleDbCommandBuilder(adapter);
                 adapter.UpdateCommand = cmdBuilder.GetUpdateCommand();
                 adapter.InsertCommand = cmdBuilder.GetInsertCommand();

            }
            catch (Exception ex)
            {
                string s = ex.Message;
                throw;
            }

            adapter.Fill(dt);

            dt.RowChanged += new DataRowChangeEventHandler(Row_Changed);
}


private void Row_Changed(object sender, DataRowChangeEventArgs e)
{
     adapter.Update(dt);

     string SearchByColumn = "ID is null";
     DataRow[] hasRows = dt.Select(SearchByColumn);
     if (hasRows.Length != 0)
     {
       string query = "SELECT MAX(ID) FROM TableGrid_00";

       OleDbCommand com;
       OleDbDataReader dataReader;
       com = new OleDbCommand(query, connection);


        dataReader = com.ExecuteReader();
        dataReader.Read();

        int resultQuery = dataReader.GetInt32(0);

        hasRows[0]["ID"] = resultQuery;

        dataReader.Close();
     }
     else
     {

     }
}

0 个答案:

没有答案