Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将记录从Access表复制到Access表_C#_Oledbconnection_Oledbcommand - Fatal编程技术网

C# 将记录从Access表复制到Access表

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

在C#中,我试图将记录从一个访问表插入到另一个访问表,但收到了上面的错误消息。是什么原因导致此错误(OLEDBEException:一个或多个必需参数没有给定值),因为它是一个直接的Select*语句

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语句中抛出一个错误。是的,表是相同的。