2011-03-02 29 views
1

我是Derby和一般數據庫的新手。我如何爲嵌入式德比數據庫創建一個準備好的語句?林不知道,因爲數據庫是嵌入式的。Derby中的存儲過程

我的字符串是:

 

final String updateString = "create table " + TABLE_NAME_TBL_IPS + " (" + 
       TABLE_COLUMN_COMPANY + " " + TABLE_COLUMN_COMPANY_DATA_TYPE+ "," + 
       TABLE_COLUMN_IP + " " + TABLE_COLUMN_IP_DATA_TYPE + ")"; 
 

還什麼是使用這個作爲一個存儲過程,而不是一份聲明中調用的好處?

回答

3

數據庫是否嵌入並不重要,只要它具有JDBC連接。在你的情況下,德比會提供給你connection information

您的代碼可能是這個樣子: -

// much easier to read with String.format()... in my opinion 
final String updateString = String.format("create table %s (%s %s, %s %s)", 
     TABLE_NAME_TBL_IPS, 
     TABLE_COLUMN_COMPANY, 
     TABLE_COLUMN_COMPANY_DATA_TYPE, 
     TABLE_COLUMN_IP, 
     TABLE_COLUMN_IP_DATA_TYPE); 

Connection con = null; 

try { 
    con = DriverManager.getConnection("jdbc:derby:yourDatabaseName"); 

    PreparedStatement ps = con.prepareStatement(updateString); 
    ps.executeUpdate(); 
    ps.close(); 
} 
catch (SQLException e) { 
    e.printStackTrace(); 
} 
finally { 
    try { 
     con.close(); 
    } 
    catch (Exception ignored) { 
    } 
} 

關於你的問題是否這樣做,使用存儲過程或PreparedStatement,有一堆的信息在那裏你很容易搜索。您通常使用存儲過程來分組一堆SQL語句,而PreparedStatement只允許您執行一條SQL語句。如果您打算公開該API以允許您的用戶執行它而不考慮技術(Java,.NET,PHP),那麼使用存儲過程是一個好主意。但是,如果您僅爲Java應用程序編寫此SQL語句纔有效,那麼只需使用PreparedStatement即可。