限制预准备语句一次执行一个查询

时间:2017-03-14 05:27:04

标签: java jdbc prepared-statement

我将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中只执行一个查询。

2 个答案:

答案 0 :(得分:0)

我想我是以错误的方式使用预备语句。这是预备语句中使用的select的一个例子。

String selectSQL = "SELECT USER_ID, USERNAME FROM DBUSER WHERE USER_ID = ?";
PreparedStatement preparedStatement = dbConnection.prepareStatement(selectSQL);
preparedStatement.setInt(1, 1001);
ResultSet rs = preparedStatement.executeQuery(selectSQL )

答案 1 :(得分:0)

我认为这是制定交易驱动方法的不错选择。 一旦收到连接,请确保禁用自动提交属性(默认情况下,如果我没有弄错,则启用它)
然后,在将每个语句传递给连接后,创建connection.commit(),然后,更改将被传递到数据库。