代码之家  ›  专栏  ›  技术社区  ›  Manos Dilaverakis

无法将数据集更改提交到数据库

  •  0
  • Manos Dilaverakis  · 技术社区  · 15 年前

    我编写了一个小表单,从数据库表(SQLCE3.5)读取数据,并将其显示在DataGridView控件中。这个很好用。然后我对它进行了修改,在显示之前对数据进行了更改,这似乎也可以正常工作,只是它似乎没有将更改提交到数据库。代码如下:

            using (SqlCeConnection conn = new SqlCeConnection(
                Properties.Settings.Default.Form1ConnectionString
                )) {
    
                conn.Open();
                using (SqlCeDataAdapter adapter = new SqlCeDataAdapter(
                    "SELECT * FROM People", conn
                    )) {
    
                    //Database update command
                    adapter.UpdateCommand = new SqlCeCommand(
                        "UPDATE People SET name = @name " +
                        "WHERE id = @id", conn);
                    adapter.UpdateCommand.Parameters.Add(
                        "@name", SqlDbType.NVarChar, 100, "name");
                    SqlCeParameter idParameter = adapter.UpdateCommand.Parameters.Add(
                        "@id", SqlDbType.Int);
                    idParameter.SourceColumn = "id";
                    idParameter.SourceVersion = DataRowVersion.Original;
    
                    //Create dataset
                    DataSet myDataSet = new DataSet("myDataSet");
                    DataTable people = myDataSet.Tables.Add("People");
    
                    //Edit dataset
                    adapter.Fill(myDataSet, "People");
                    people.Rows[0].SetField("name", "New Name!");
                    adapter.Update(people);
    
                    //Display the table contents in the form datagridview
                    this.dataGridView1.DataSource=people;
                }
            }
    

    窗体显示如下:

    alt text

    我做错什么了?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Manos Dilaverakis    15 年前

    我找到了。花了好几天,但我找到了。

        2
  •  0
  •   ktharsis    15 年前

    更新行不应该是

    adapter.Update(myDataSet, "People")
    
        3
  •  0
  •   Rich    15 年前

    我会确保数据集相信它被改变了。援引数据集.HasChanges(返回布尔)和数据集.GetChanges,它返回原始数据集的增量。

    为了消除CE数据适配器的任何问题,您是否也对SQLServerExpress尝试过这种方法?