如何正确地将一行数据从一个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#很陌生,这是我第一次尝试做这样的操作。
您需要两个连接。一个连接用于从第一个数据库读取数据并填充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"(而不是"##")。