C# 将记录从Access表复制到Access表
在C#中,我试图将记录从一个访问表插入到另一个访问表,但收到了上面的错误消息。是什么原因导致此错误(OLEDBEException:一个或多个必需参数没有给定值),因为它是一个直接的Select*语句C# 将记录从Access表复制到Access表,c#,oledbconnection,oledbcommand,C#,Oledbconnection,Oledbcommand,在C#中,我试图将记录从一个访问表插入到另一个访问表,但收到了上面的错误消息。是什么原因导致此错误(OLEDBEException:一个或多个必需参数没有给定值),因为它是一个直接的Select*语句 OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=P:\\Source.mdb;"); connection.Open(); OleDbCommand co
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=P:\\Source.mdb;");
connection.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO [;DATABASE=V:\\Destination.mdb;].[table1] SELECT * FROM table1 WHERE company = 2", connection);
command.ExecuteNonQuery();
connection.Close();
EDIT---Insert语句中出现错误
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=P:\\Source.mdb;");
connection.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO [;DATABASE=V:\\Destination.mdb;].[table1] (Name, Address, Phone, RepeatCustomer) SELECT Name, Address, Phone, RepeatCustomer FROM table1 WHERE company = 2", connection);
command.ExecuteNonQuery();
connection.Close();
这两张桌子一样吗?如果列顺序和/或类型不匹配,则会出现此错误。明确定义要修改的列是一种更好的形式:
INSERT INTO [;DATABASE=V:\\Destination.mdb;].[table1] (col1,col2) SELECT col1,col2 FROM table1 WHERE company = 2
这样,顺序就不重要了,您也不会试图添加到不存在的列。我在复制到同一个表时遇到了同样的问题。这两个字段的示例对我有效:
INSERT INTO [Orders] (CUST, PART_NUMBE) SELECT CUST, PART_NUMBE FROM [orders]
WHERE [OrderNumber]= 23979
我更新了上面的代码以显示列表列,现在它在Insert语句中抛出一个错误。是的,表是相同的。