所以,我有Launch_data.mdb和Out_data.mdb。 Launch_data中表(任意)的数据将以我的形式加载到datagridview。用户将单击一行,然后单击“移至”按钮。该程序需要将该行从Launch_data.mdb移动到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#,这是我第一次尝试这样的操作。
答案 0 :(得分:0)
您需要两个连接。从第一个数据库读取数据并填充datagridview的连接,然后是第二个连接,用于将数据写入Out_data数据库。
通过执行类似操作来获取所选行的值,从而为插入查询创建参数。
cmd.Parameters.AddWithValue("?", dataGridView1.SelectedRows[0].Cells[0]);
Access不支持命名参数,因此您必须按照在查询中使用它们的顺序添加它们。您的INSERT语句可能看起来像这样:
"Insert into TABLE (Col1, Col2, Col3) VALUES (?, ?, ?)"
答案 1 :(得分:0)
找到有效的代码:
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"和" '' " (而不是" ##")。