2013-03-04 32 views
1

我希望將普通的sql查詢轉換爲java中的參數sql將普通的sql轉換爲java中的參數sql

我有下面已經在項目中使用的方法。這有很多參考。

public Object executeQuery(String aQuery) { 
    Connection con = null; 
    Statement stmt = null; 
    ResultSet r = null; 
    try { 

     con = getConnection() ; 
     stmt = con.createStatement(); 
     r = stmt.executeQuery(aQuery); 

     if (r.next()) { 
      //return extracted result; 
     } 

     return null; 
    } catch (SQLException e) { 
     throw new RuntimeException(
      "Cannot execute query " + aQuery + " : " + e.getMessage()); 
    } finally { 
     cleanup(r,stmt,con); 
    } 
    } 

    //========= 
    //calling above method 
    executeQuery("Update USER set user_id = 15 where user_name='test'); 

我在想用java語句將它轉換爲參數化的sql。 然後,該方法調用不會改變,但查詢像

 Update USER set user_id = 15 where user_name='test' 

將用java PreparedStatement和適當的參數

 Update USER set user_id = ? where user_name=? 

有沒有辦法做到這一點喜歡使用Spring和其他框架。

在此先感謝!

+0

你的問題不清楚。你是否想要更改方法,以便在不改變方法調用的情況下使用預處理語句執行查詢? – 2013-03-04 08:16:12

回答

2

然後,該方法調用不會改變

你應該絕對改變調用方法。我會強烈阻止你嘗試手動執行此操作。如果調用者未能正確地轉義它們的值,那麼您已經破壞了SQL - 試圖修復這個問題以糾正帶參數的SQL將是一件痛苦的事情。

我建議你超載的方法,並逐漸將來電者從破碎的方法移動到工作。 (當然,立即棄用破碎的那個)

我意識到可能有很多呼叫者,因此很多工作 - 但這只是讓它破裂了很長時間的結果。現在解決潛在的問題,而不是隻在它上面貼上石膏。

+0

+1默默地讓我意識到'deprecated'的使用。 – 2013-03-04 07:49:41