如何正确地将一行数据从一个Access数据库复制到另一个使用c#

本文关键字:复制 数据库 Access 一个 另一个 正确地 一行 数据 | 更新日期: 2023-09-27 17:52:36

所以,我有Launch_data。和Out_data.mdb。从表(任何)在Launch_data中的数据将加载到我的表单的datagridview。用户将点击一行,然后点击"移动到"按钮。程序需要从Launch_data移动该行。到Out_data.mdb。两个数据库具有相同的表名和结构。

代码:

private void button3_Click(object sender, EventArgs e)
{
   con1.Open();
   using (var cmd = new OleDbCommand())
   {  
      cmd.Connection = con1;
      cmd.CommandType = System.Data.CommandType.Text;
      cmd.CommandText =
      @"INSERT INTO " + treeView1.SelectedNode.Name + " IN " + System.IO.Directory.GetCurrentDirectory() + @"'Out_data.mdb " +
      @"SELECT * FROM " + treeView1.SelectedNode.Name + " WHERE [Added at:] LIKE ('" + SelectedKey + "')";
      cmd.ExecuteNonQuery();
   }
   con1.Close();
}

con 1是:

OleDbConnection con1 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.IO.Directory.GetCurrentDirectory() + @"'Launch_data.mdb");

当我运行代码时,CommandText包含:"cmd.CommandText = "INSERT INTO H11 IN C:''Users''uidg3149''Desktop''PPAP Area management''PPAP Area management''bin''Debug''Out_data.mdb SELECT * FROM H11 WHERE [Added at:] LIKE ('3/24/2014 2:31:15 PM')""
这对我来说看起来很好(应该插入它应该在哪里,但它给了我"Syntax error in INSERT INTO statement."。我对c#很陌生,这是我第一次尝试做这样的操作。

如何正确地将一行数据从一个Access数据库复制到另一个使用c#

您需要两个连接。一个连接用于从第一个数据库读取数据并填充datagridview,然后第二个连接用于将数据写入Out_data数据库。

为插入查询创建参数,从所选行获取值,执行如下操作。

cmd.Parameters.AddWithValue("?", dataGridView1.SelectedRows[0].Cells[0]);

Access不支持命名参数,所以你必须按照你在查询中使用它们的顺序添加它们。您的INSERT语句可能看起来像这样:

"Insert into TABLE (Col1, Col2, Col3) VALUES (?, ?, ?)"

找到一个有效的代码:

cmd.CommandText =@"INSERT INTO [;DATABASE="+ System.IO.Directory.GetCurrentDirectory() + @"'Out_data.mdb]." + treeView1.SelectedNode.Name +
                 @" SELECT " + treeView1.SelectedNode.Name + ".* FROM " + treeView1.SelectedNode.Name + " WHERE (H11.[Added at:] = (#" + SelectedKey + "#))";

顺便说一句,@HansUp你也可以用"LIKE"answers"(而不是"##")。