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

时间:2014-08-13 05:26:28

标签: c# excel ms-access updates

如何从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();

                }
            }

无效的参数。 为什么呢?

1 个答案:

答案 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$]";
...

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