c# - 在 Excel 上执行多个更新命令

标签 c# sql excel c#-4.0 ole

我有一个 Excel 文件,我想更新工作表中的多行。所以我写了这段代码:

OleDbConnection cn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + serverPath + ";Extended Properties = Excel 8.0;");
        try
        {

            strUpd = "";
            strUpd += "update [Data14City$] set  B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8  where id = 1 ";
            strUpd += " update [Data14City$] set  B_1_1 = 0 ,B_1_2 = 8 ,B_1_3 = 17 ,B_1_4 = 0  where id = 2";
            cn.Open();
            OleDbCommand cmdInsert = new OleDbCommand(strUpd, cn);
            cmdInsert.ExecuteNonQuery();
            cn.Close();
        }
        catch
        {
        }

我得到了这个错误:

Syntax error (missing operator) in query expression 'id = 1 update [Data14City$] set B_1_1 = 0 ,B_1_2 = 8 ,B_1_3 = 17 ,B_1_4 = 0 where id = 2'.

当我将 ; 添加到这一行时:

strUpd += "update [Data14City$] set  B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8  where id = 1;";

我遇到了这个错误:

Characters found after end of SQL statement.

如何在 Excel 中执行多条语句?

谢谢

最佳答案

你真的不需要像那样堆积你的更新(事实上,正如上面所指出的,你不能)。单独执行它们不会花费更长的时间。这是我一直在使用的代码,它工作正常(实际上我有一个循环,但如果你不能循环你的更新,它也会工作得同样好)。

cn.Open();

using (OleDbCommand cmd = cn.CreateCommand())
{
    cmd.CommandText = "update [Data14City$] set  B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8  where id = 1";
    cmd.ExecuteNonQuery();
    cmd.CommandText = "update [Data14City$] set  B_1_1 = 0 ,B_1_2 = 8 ,B_1_3 = 17 ,B_1_4 = 0  where id = 2";
    cmd.ExecuteNonQuery();

    // ... and so on
}

cn.Close();

关于c# - 在 Excel 上执行多个更新命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13359748/

相关文章:

C#:通过 TextReader 的 ReadLine() 解析带有一个定界符的字符串的有效方法是什么?

c# - 帮助 ASP.NET MVC HtmlHelper API 设计

来自连接字符串的 SQL where 子句

excel - 有没有办法取消选中数据透视表中除特定项目之外的其他项目?

c# - 部分类中的自定义属性(无效的列名称)

c# - Xamarin表单选择器设置了所选项目

mysql - 动态枢轴求和和分组依据

sql - 使用 JSONB 列中的值连接表

javascript - 将 html 表导出到 Excel 数字成为日期

vba - VBA 有没有办法了解未使用的变量?