【问题标题】:Add row to Access Table from DataTable从 DataTable 将行添加到访问表
【发布时间】:2014-01-27 01:54:54
【问题描述】:

我已使用此代码从我的 Access 表中创建了一个 DataTable

DataTable dataTable = new DataTable();
...
using (OleDbConnection oledbConnection = new OleDbConnection(connection))
{
   oledbConnection.Open();
   using (OleDbCommand oledbCommand = new OleDbCommand("SELECT * FROM Student", oledbConnection))
   {
       using (OleDbDataAdapter oledbDataAdapter = new OleDbDataAdapter(oledbCommand))
       {
          oledbDataAdapter.Fill(dataTable);
       }
   }
}

我后来通过使用此代码插入新行来更改数据表。

DataRow dataRow = dataTable.NewRow();
dataRow["FirstName"] = "John";
dataRow["LastName"] = "Connor";
dataTable.Rows.Add(dataRow);
dataTable.GetChanges();

我怎样才能在我的访问数据库中带来这种变化? 下面的代码是否正确?

using (OleDbConnection oledbConnection = new OleDbConnection(connectionString))
{
   OleDbDataAdapter oledbDataAdapter = new OleDbDataAdapter();
   oledbDataAdapter.SelectCommand = new OleDbCommand(queryString, oledbConnection);
   OleDbCommandBuilder oledbCommandBuilder = new OleDbCommandBuilder(oledbDataAdapter);
   connection.Open();
   oledbDataAdapter.DeleteCommand = oledbCommandBuilder.GetDeleteCommand(true);
   oledbDataAdapter.InsertCommand = oledbCommandBuilder.GetInsertCommand(true);
   oledbDataAdapter.UpdateCommand = oledbCommandBuilder.GetUpdateCommand(true);
   oledbDataAdapter.Update(dataTable);
   connection.Close();
}

【问题讨论】:

    标签: c# database datatable oledb


    【解决方案1】:

    您必须重新打开连接并插入该数据库。 SQL 可能如下所示:

    string sql = String.Format("INSERT INTO Students(FirstName,LastName) VALUES({0},{1})", "John", "Connor")
    

    【讨论】:

    • 但是不能将我的DataTable直接复制到Access文件中?
    • 不完全确定,但我认为不明确重新打开连接是不可能的。
    • 您能帮我或建议一种复制整个数据表的方法吗?这很重要。
    • 此链接OleDbDataAdapter.Update() 可能是您正在寻找的。您应该能够传入修改后的数据表。
    【解决方案2】:

    您必须在DataTable 中为行插入键入的代码之后使用insert query 将其插入Access DB

    这是因为DataTable 是一个保存在内存中的Disconnected Architecture(意味着它从数据库中获取数据并且不再与它连接)。

    【讨论】:

    • 但是不能将我的DataTable直接复制到Access文件中?
    猜你喜欢
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2013-09-21
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多