批量执行sql语句时,如何跳过其中发生的错误,继续执行剩下的sql语句,最后在显示所有错误信息

最近,在写项目的时候,遇到这样一个需求,即批量执行数据库授权语句(grant ),当n条授权语句内某一条授权语句,执行失败后,记录其错误信息,然后继续执行剩下的grant 语句,最后在吧错误信息统一抛出。

这里给解决思路:

       1.首先,我们需要捕获到sql执行的错误。

          try{

             jdbc.execute(sql);

          }catch(Exception e)

         { 

                 ......//在此记录下错误信息

          }

      2. 如何记录错误信息

      建议做法:StringBuilder message  =new StringBuilder();

     try{

             jdbc.execute(sql);

          }catch(Exception e)

         {     

                 ......//在此记录下错误信息  

               //你也可以在此对错误信息进行处理

              message.append(e.getMessage);

          }

     3.完成了一次错误信息捕获

     4.批量执行sql语句

     for(....)

    {

           try{

             jdbc.execute(sql);

           }catch(Exception e)

          {     

                 ......//在此记录下错误信息  

                //你也可以在此对错误信息进行处理

               message.append(e.getMessage);

           }

     }

     这样就能够在for 循环全部执行后,在抛出异常信息。

   5.如果你想要出现错误就抛出异常

   可以 如下做法:

          for(....)

       {

           try{

             jdbc.execute(sql);

           }catch(Exception e)

           {     

                 ......//在此记录下错误信息  

                //你也可以在此对错误信息进行处理

               message.append(e.getMessage);

              return message;

            }

      }

  try catch 的使用方式即是,若catch 内不直接返回结果的话,它会跳过此次发生错误的sql执行,继续循环剩余的sql。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL 中,如果你想在执行一系列 SQL 语句跳过执行出错的语句并继续执行后续语句,你可以使用异常处理机制。具体实现方式因不同的数据库管理系统而异。 在大多数数据库管理系统中,你可以使用以下步骤来实现此目的: 1. 开启事务:将一系列语句放在一个事务中,以确保原子性和一致性。 2. 执行 SQL 语句:按顺序执行你的 SQL 语句。 3. 捕获异常:在执行每个语句,捕获可能出现的异常。 4. 提交或回滚事务:如果有异常发生,可以选择回滚事务以撤销之前的操作;如果没有异常,可以提交事务以保存更改。 以下是一个示例,展示了如何在 Python 中使用 MySQLdb 模块执行 SQL 语句并处理异常: ```python import MySQLdb # 创建数据库连接 conn = MySQLdb.connect(host='localhost', user='username', passwd='password', db='database') # 创建游标对象 cursor = conn.cursor() # 开启事务 conn.begin() try: # 执行 SQL 语句 cursor.execute("SELECT * FROM table1") cursor.execute("INSERT INTO table2 VALUES (1, 'value')") cursor.execute("UPDATE table3 SET column1 = 'new_value' WHERE column2 = 'old_value'") # 提交事务 conn.commit() except Exception as e: # 发生异常回滚事务 conn.rollback() print("Error:", e) # 关闭游标和数据库连接 cursor.close() conn.close() ``` 这个示例展示了如何执行三个 SQL 语句,如果其中任何一个语句发生异常,就会回滚事务并打印错误信息。如果没有异常,事务会被提交。你可以根据自己的需求修改和扩展这个示例。请注意,具体的实现方式可能因数据库管理系统和编程语言而异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值