当前位置: 首页 > 知识库问答 >
问题:

将准备好的语句限制为一次执行一个查询

蔺德曜
2023-03-14

我正在将select查询传递给准备好的语句以获取记录列表。问题是,如果我将查询追加到insert或truncate table中,那么准备好的语句将执行所有查询。示例

SELECT INDEX.*
    ,item.*
FROM cust_sales_order_index AS INDEX
INNER JOIN (
    SELECT pkid AS item_pkid
        ,index_id
        ,item_code
        ,NAME
        ,quantity AS item_quantity
    FROM cust_sales_order_item
    ) AS item
    ON INDEX.pkid = item.index_id
WHERE (pkid = 100001);

CREATE TABLE temp_cust_sales_order_index_temp (LIKE cust_sales_order_index);

WITH temp1
AS (
    DELETE
    FROM cust_sales_order_index returning *
    )
INSERT INTO temp_cust_sales_order_index_temp (SELECT * FROM temp1);-- )  ORDER BY time_update 

如何限制sql查询只执行select查询,或者在Java中一次至少只执行一个查询。

共有1个答案

巢星纬
2023-03-14

我认为这是一个很好的选择来做一个交易驱动的方法。接收到connection后,请确保禁用autocommit属性(如果我没有弄错的话,默认情况下是启用属性)
然后,在每个语句传递给connection后,执行connection.commit(),只有这样,更改才会传递给数据库。

 类似资料:
  • 我有以下准备的一个准备好的声明失败了... 我在我的第一份准备好的声明中几乎有同样的准备,而且它进行得很好。我不确定是否我有两个准备好的声明,如果这是造成一个问题,或情况可能是什么? 现在我有个错误... 更新-可能的内部连接,像这样?

  • 我的目标是:我需要从表1中检索name2),但是我还需要检索具有相同名字的人的状态(在本例中是statusY)。注意,对于name2的检索,我不能依赖于json对象的索引(name2可能是json对象的第一个键)。 到目前为止,我将如何做到这一点:A)在第一个查询中从表1中获取name2),对其进行清理,以及B)在第二个查询中使用它,然后正确地检索状态 语句A)和B)都是参数化的准备好的sql语句

  • 问题内容: 我正在使用JDBC模板,并希望使用准备好的语句从数据库中读取数据。我遍历.csv文件中的许多行,并且在每一行上执行一些具有相应值的SQL选择查询。 我想加快从数据库中的读取速度,但是我不知道如何使JDBC模板与准备好的语句一起使用。 有PreparedStatementCreator和PreparedStatementSetter。如本例所示,它们都是使用匿名内部类创建的。但是在Pre

  • 场景:继我之前的问题(在存储过程中使用游标循环行MySQL)之后,我尝试执行一个嵌套的prepare语句,在该语句中,我向外部语句输入一个日期,然后调用内部语句,该语句从表中获取数据。 代码: 问题:这段代码运行时没有错误,但没有给出任何结果。如果我只运行第一个准备好的语句,一个接一个地直接输入变量,就可以了。所以我猜问题在于我的第二句话。 问题:你知道我做错了什么吗? Obs:第二个代码应该循环

  • 我想使用带有LIKE关键字的java准备语句。我正在尝试匹配日期字符串。这是我的密码。 它给出了以下例外。 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,了解在“?”附近使用的正确语法?和s.date一样?订单截止日期DESC LIMIT 1'第1行