在 Excel 上执行多个更新命令

Posted

技术标签:

【中文标题】在 Excel 上执行多个更新命令【英文标题】:execute multiple update command on Excel 【发布时间】:2012-11-13 11:11:33 【问题描述】:

我有一个 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
        
        

我得到了这个错误:

查询表达式 '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;";

我收到了这个错误:

在 SQL 语句结束后找到的字符。

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

谢谢

【问题讨论】:

它缺少 "AND"/"OR" :- "update [Data14City$] set B_1_1 = 5 ,B_1_2 = 26 ,B_1_3 = 44 ,B_1_4 = 8 where id = 1 OR set B_1_1 = 0 ,B_1_2 = 8 ,B_1_3 = 17 ,B_1_4 = 0 其中 id = 2" 阿米说得对,你试图实现:- UPDATE table SET A WHERE ID=1 OR/AND SET B WHERE ID=2?你试过上面的字符串吗? 不。我有两行的两个更新命令 你用一个字符串值执行你的命令,这是行不通的,因为它会在第一个语句的末尾中断。它必须是一个声明。 我认为 Microsoft Jet OleDB 4.0 不支持在同一个 OleDbCommand 中使用多个更新语句。 This article is rather old,但请查看“多个结果”属性。 【参考方案1】:

您实际上并不需要像那样堆叠更新(事实上,正如上面所指出的,您不能)。单独执行它们不需要更长的时间。这是我一直在使用的代码,它运行良好(实际上我的代码在一个循环中,但如果你不能循环更新,它也会同样运行良好)。

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();

【讨论】:

以上是关于在 Excel 上执行多个更新命令的主要内容,如果未能解决你的问题,请参考以下文章

一键帮你复制多个文件到多个机器——PowerShell小脚本(内附PS远程执行命令问题解析)

打开EXCEL出现“此工作薄包含一个或多个无法更新的链接”

Linux一次在多个服务器运行命令

当使用特定值更新多个列时,在 VIEW 上使用触发器执行存储过程

在多个命令输出上执行脚本

excel表格打开提示此工作簿中包含一个或多个无法更新的链接,应该怎么处理? 还有安全警告,怎么解决?