【问题标题】:Run multiples queries in single statement under javajava下在单个语句中运行多个查询
【发布时间】:2022-08-16 16:07:27
【问题描述】:

我想从 table1 中的 SQLColumn 中选择 sqlquery,然后在 java 中执行 sqlquery。但是,table1 中的查询列包含多个用分号分隔的查询。

Table1
Name         SQLColumn
-------      ------------------------------------
Query1       set nocount on;select * from table2;
Query2       declare item nvarchar(10); select item=data from table2;

Connection conn = ....
PreparedStatement ps = conn.prepareStatement(SQLColumn);
ps.execute();

由于正常的preparedstatement只支持每次执行的单个查询,关于如何在java下的单个语句中运行多个查询而不是存储过程的任何解决方案?

    标签: java sql-server mssql-jdbc


    【解决方案1】:

    您可以运行两个单独的语句,但在单个语句中交易,设置为您想要的任何隔离级别。这将是一种方法,保持两个语句都是原子的,这意味着要么都完成而没有错误,否则一切都将被回滚。

    你评论说:

    因为正常的preparedstatement每次执行只支持单个查询?

    SQL Server 可能就是这种情况,但某些数据库实际上公开了 JDBC 驱动程序接口,这些接口确实支持单个 JDBC 调用中的多个语句。但是,这不是最佳实践,因为它可能会暴露某种安全漏洞。上面的交易建议是一个更好的方法。

    【讨论】:

      猜你喜欢
      • 2017-02-02
      • 2017-01-11
      • 2013-10-15
      • 1970-01-01
      • 2022-07-13
      • 2012-06-27
      相关资源
      最近更新 更多