2009-05-04 75 views
0

建立與mysql的jdbc連接的最佳方式是什麼? 並執行簡單的語句。怎麼做? 謝謝。建立連接mysql和jdbc的最佳方式/模板是什麼?

+1

最好的方法是依賴於你的要求,所以更多的信息將有助於回答這個問題。你打算部署到一個servlet引擎,例如Tomcat嗎? – Pool 2009-05-04 12:49:03

+0

獨立應用程序 - 胖客戶端。 – feiroox 2009-05-04 13:52:41

回答

3

爲MySQL/JDBC的基本樣板基本是這樣的:

獲取連接

Class.forName("com.mysql.jdbc.Driver").newInstance(); 
Connection conn = DriverManager.getConnection("jdbc:mysql://databaseName"); 

執行語句

Statement stmt = conn.createStatement(); 
ResultSet rs = stmt.executeQuery("SELECT * from tableName"); 
while (rs.next()) { 
    System.out.println(rs.getString(1)); 
} 

關閉語句和連接

rs.close(); 
stmt.close(); 
conn.close(); 

你只需要確保你已經安裝了驅動程序和/或在你的CLASSPATH中。

1

這取決於你的情況。

如果你只需要執行從獨立的應用程序的一些疑問,那麼你應該使用像單個連接:

Class.forName ("yourDriverName"); 

Connection cn = DriverManager.getConnection ("db url"); 
Statement st = cn.createStatement(); 
ResultSet rs = st.executeQuery ("select * from foo"); 
while (rs.next()) { 
    doSmth(); 
} 
rs.close(); 
st.close(); 
cn.close(); 

但如果你正在開發真正的應用程序(特別是網絡的應用程序),然後使用數據源的。閱讀您的數據庫和Web服務器的手冊,瞭解如何配置數據源。 DataSource允許你使用連接池 - 它會提高性能,它會很祕密。

配置DataSource並不困難。

2

這是二十一世紀 - 使用JPA(ORM)實現。但是,如果你堅持要回到金屬上(可能會遭到倒票) -

從某些驅動程序獲取JDBC連接的方法很多。使用硬連線名稱進行反射是最常見的,也可能是大部分腦損傷。如果你打算強化一個類名,你可能會得到普通代碼的好處(編譯器捕獲錯別字,不需要處理多餘的異常,更容易閱讀,顯式依賴,更好的工具支持等)。

也養成了安全清理資源的習慣。

所以:

public static void main(String[] args) throws SQLException { 
    Driver driver = new com.mysql.jdbc.Driver(); 
    Connection connection = driver.connect(
     "jdbc:mysql://mydatabase", 
     new java.util.Properties() {{ 
       put("user", "fred"); 
     }} 
    ); 
    try { 
     PreparedStatement statement = connection.prepareStatement(
      "SELECT insideLeg FROM user WHERE name=?" 
     ); 
     try { 
      statement.setString(1, "jim"); 
      ResultSet results = statement.executeQuery(); 
      try { 
       if (results.next() { 
        System.out.println("= "+results.getLong(1)); 
       } else { 
        System.out.println("Missing."); 
       } 
      } finally { 
       results.close(); 
      } 
     } finally { 
      statement.close(); 
     } 
    } finally { 
     connection.close(); 
    } 
} 

什麼亂七八糟的!它甚至不使用交易。是的,使用ORM。這些日子他們非常可敬。

你不需要爲每一條語句都做這件事。您不想每次都創建實例化驅動程序。特別是圍繞成語執行是有用的。

相關問題