2012-08-08 75 views
-1

這聽起來有點奇怪,但我想創建一個PreparedStatement
我有Statement後。這是因爲我的項目差不多是50%,並且直到現在我還用Statement的 。從語句創建PreparedStatement?

在我的數據庫類我有一個連接到mysql每當我需要使用MySQL服務器時的構造:

public class Database 
{ 
    private Statement m_statement = null; 
    private Connection m_connection = null; 
    private PreparedStatement m_prepared = null; // that one was added just now 

    private static final String ACCOUNTS_TABLE = "CheckingAccountsTable"; 
    private static final String PERSONNEL_TABLE = "PersonnelTable"; 
    // private static final String 


    public Database() throws ClassNotFoundException 
    { 
     try 
     { 
      Class.forName("com.mysql.jdbc.Driver"); 
      this.m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root"); 
      this.m_statement = this.m_connection.createStatement(); 

     } 

     catch (SQLException s) 
     { 
      System.out.println("SQL statement is not executed! 2!"); 
     } 

    } 


} 




// from here I have something like 20 methods that are based on the Statement 

改變一切將需要大量的時間,我沒有。所以,我的問題是:

我可以使用我創建的聲明與PreparedStatement?或者根據Statement創建PreparedStatement

謝謝

+1

用預先聲明創建的聲明?你什麼意思? – 2012-08-08 16:36:44

回答

1

這是不可能的。 StatementPreparedStatement代表不同的事物。

  • Statement用於調用不同的SQL查詢,你不知道你要使用什麼SQL查詢創建Statement實例。
  • PreparedStatement在創建時被賦予一個SQL查詢,如果可能的話,驅動程序會嘗試預編譯查詢。您可以填寫不同的參數並反覆使用,但不能更改查詢,它始終使用創建時給定的參數。

所以,我怕你必須重構你的代碼,沒有簡單的方法如何在這兩者之間切換。

在大多數情況下,使用PreparedStatement是首選,因爲它允許您以安全的方式將參數傳遞給SQL查詢,而無需冒着SQL injection的風險。