C#如何从Excel更新访问表?

如何从Excel中更新访问表?

string Access = System.AppDomain.CurrentDomain.BaseDirectory + "\\DB.mdb"; string Excel = fileName; string connect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Excel + ";Extended Properties=Excel 8.0;"; using (OleDbConnection conn = new OleDbConnection(connect)) { using (OleDbCommand cmd = new OleDbCommand()) { cmd.Connection = conn; cmd.CommandText = "UPDATE [MS Access;Database=" + Access + "].[person] set vahedH=@vahedH,Bprice=@Bprice, Qest=@asd,mande=@mande,Date=@Date WHERE pcode=@pcode SELECT * FROM [result$]"; cmd.Parameters.AddWithValue("@vahedH", "sts"); cmd.Parameters.AddWithValue("@Bprice", "sts"); cmd.Parameters.AddWithValue("@asd", "sts"); cmd.Parameters.AddWithValue("@mande", "sts"); cmd.Parameters.AddWithValue("@Date", "sts"); cmd.Parameters.AddWithValue("@pcode", 1250); conn.Open(); cmd.ExecuteNonQuery(); } } 

无效的论点。 为什么?

根据MSDN

当CommandType设置为Text时,OLE DB .NET Provider不支持将parameter passing给SQL语句或由OleDbCommand调用的存储过程的命名参数。 在这种情况下,必须使用问号(?)占位符。

这意味着,您不必像以前那样使用命名参数,而必须使用?replaceSQL语句中的命名参数(例如@vahedH应该只是?),然后按照您希望插入的顺序添加参数。

您的代码将是(仅更改):

 ... cmd.CommandText = "UPDATE [MS Access;Database=" + Access + "].[person] set vahedH=?,Bprice=?, Qest=?,mande=?,Date=? WHERE pcode=? SELECT * FROM [result$]"; ... 

然后你可以像刚才那样添加参数,但参数名称并不重要,只是它们的添加顺序。