当前位置: 首页 > 面试题库 >

在Excel上执行多个更新命令

叶衡虑
2023-03-14
问题内容

我有一个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更新[Data14City $]中的语法错误(缺少运算符),设置B_1_1 = 0,B_1_2 = 8,B_1_3 =
17,B_1_4 = 0,其中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中执行多条语句?

谢谢


问题答案:

您实际上并不需要像这样堆叠更新(实际上,如上所述,您不能这样做)。单独执行它们不需要很长时间。这是我一直在使用的代码,它可以正常工作(我实际上在一个循环中,但是如果您无法循环更新,它同样可以正常工作)。

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


 类似资料:
  • 问题内容: 我试图在一行中合并多个Linux命令以执行部署操作。例如 问题答案: 如果仅在上一个命令成功的情况下才执行每个命令,请使用运算符将它们组合: 如果其中一个命令失败,则将不执行其后的所有其他命令。 如果要执行所有命令而不管先前的命令是否失败,请使用分号将它们分开: 在您的情况下,我想您希望第一种情况下,下一条命令的执行取决于上一条命令的成功。 您还可以将所有命令放在脚本中,然后执行该脚本

  • 我正试图从cloud firestore的文档中获取产品,然后将该产品放入购物车。当我阅读(成功地)产品时,我会尝试将其放入一个在外部声明的arraylist中,但除非我将final放入变量,否则它不会工作。这样,当我运行下面的代码时,我成功地检索到了数据,但操作仍在进行。普罗多蒂。add(prod)在命令事务之后执行。update(),因此更新不会从一开始就上传任何内容。 我希望命令更新是在ca

  • 我正在从事一个项目,其中我打算制作一个JavaGUI应用程序,该应用程序连接到ssh服务器并在服务器上执行远程命令。我愿意使用JSch库。我的目标是制作按钮和文本字段,让用户能够轻松发送命令和获得回复。我的意思是,用户不会打开xShell并提示“grep”hi“/usr/file.txt”,而是从列表中选择路径,在文本字段中输入“hi”,然后按下grep按钮。 问题是,我找不到一个在一个会话中执行

  • 问题内容: 我有一个使用sqlserver精简版和实体框架进行数据访问的c#项目。我需要向数据库插入或更新大量行(5000+或更多),因此,如果键存在,请更新记录(如果未插入)。我找不到紧凑型版本和EF做到这一点的方法,而没有糟糕的性能,即在一台核心i7计算机上花了2分钟以上的时间。我尝试搜索记录以查看它是否存在,然后插入(如果不存在)或更新(如果存在),搜索是该记录上的杀手kill。我曾尝试编译

  • 问题内容: 我需要执行选择,然后以原子方式更新其中的一些行。 我正在使用的代码如下所示(简化): 我可以保证更新将自动执行吗?如果没有,我如何保证? 如果任何其他进程更改了您通过其更新的数据库行,该怎么办?有什么方法可以锁定行? 问题答案: 这里可能有很多技术和概念在起作用,当您开始考虑多线程/多请求应用程序时,事情就会变得相当棘手。 正如Iassevk所说,您应该研究使用事务来确保更新的原子性-