2017-03-14 88 views
0

我將選擇查詢傳遞到準備好的語句以獲取記錄列表。 問題是如果我追加查詢插入或截斷表,準備的語句將執行所有查詢。 例如限制準備語句一次執行一個查詢

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查詢只執行選擇查詢或至少在Java中的時間只執行一個查詢。

+1

不要......追加查詢?? –

+1

我使用 \t \t \t prepStmt = con.prepareStatement(selectStmt); \t \t \t ResultSet rs = prepStmt.executeQuery(); 這將執行內部的SQL查詢 – Abdqr92

+1

你的java代碼的外觀如何? –

回答

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) 
0

我認爲這是一個很好的選擇,使事務驅動的方法。 一旦你收到連接,請確保你禁用自動提交屬性(默認情況下啓用,如果我沒有弄錯)
然後,每個語句傳遞到連接後,使connection.commit(),然後纔會將更改傳遞到數據庫。

+0

我認爲這很有幫助,謝謝 – Abdqr92