如何从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();
}
}
无效的参数。 为什么呢?
答案 0 :(得分:1)
根据MSDN
OLE DB .NET提供程序不支持传递的命名参数 SQL语句或由a调用的存储过程的参数 CommandType设置为Text时的OleDbCommand。在这种情况下, 必须使用问号(?)占位符。
这意味着您不必像以前那样使用命名参数,而是必须将SQL语句中的命名参数替换为?(例如@vahedH应该只是?),然后按照您想要的相同顺序添加参数插入它们。
您的代码将是(仅更改):
...
cmd.CommandText = "UPDATE [MS Access;Database=" + Access + "].[person] set vahedH=?,Bprice=?, Qest=?,mande=?,Date=? WHERE pcode=? SELECT * FROM [result$]";
...
然后你可以像你刚才那样添加参数,但参数名称无关紧要,只是它们的添加顺序。