在 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远程执行命令问题解析)