2013-10-11 44 views
0

我已經做了一個數據庫連接來從代碼中獲取數據,現在我需要保持這個db實例全局,並且需要在項目的其他部分使用。dbn conn global

請引導我一樣。

我有下面的代碼

try 
    { 
     // load the DB2 Driver 
     Class.forName("com.ibm.db2.jcc.DB2Driver"); 
     // establish a connection to DB2 
     Connection db2Conn = DriverManager.getConnection 
     (dbUrl,"wcsadm",dbPass); 
     // use a statement to gather data from the database 
     Statement st = db2Conn.createStatement(); 
     String myQuery=null; 
     String insQuery=null; 
     myQuery = "my query" 
     // execute the query 
     ResultSet resultSet = st.executeQuery(myQuery); 
     // cycle through the resulSet and display what was grabbed 
     while (resultSet.next()) 
     { 
     //do something 
     } 
     resultSet.close(); 
     st.close(); 
     db2Conn.close(); 
    } 
+0

什麼不起作用? – spydon

+0

事情工作正常,但我需要幫助,使全球數據庫連接。 – Benjamin

回答

0

一)考慮數據庫連接池見http://commons.apache.org/proper/commons-dbcp/ B)如果你想要去的DBCP然後創建一個單身,這將有助於該項目的部分連接。

不知道更多關於您的項目(單/多用戶,基於Web),很難提供更多的建議。

public static class SQL { 

Connection connection = null; 
String connectionUrl = "jdbc:mysql://localhost:3306/bank"; 
String connectionUser = "admin"; 
String connectionPassword = "root"; 


public SQL(){} 

public Connection getConnection() { 

    if (connection != null) { 
    return connection; 
    } 
    try{ 

    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    connection = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword); 
    return connection; 
} 
    catch(Exception e){ 
    e.printStackTrace(); 
} 
 return null;    
 } 
    } 
+0

它是一個普通的Java應用程序,不是基於Web的,也適用於單個用戶。 – Benjamin

+0

>>它是一個普通的Java應用程序,不是基於Web的,也適用於單個用戶。 - 這是不正常的,然後;-)無論如何,也許你的連接的東西移動到一個靜態或單身類 –

+0

你可以請示例給我一個例子嗎? :) – Benjamin

0

這就是我如何做到這一點,但僅適用於testingprojects:

public class SQL { 

Connection conn = null; 
Statement stmt = null; 
ResultSet rs = null; 


public SQL(){ 

    try{ 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 

    String connectionUrl = "jdbc:mysql://localhost:3306/bank"; 
    String connectionUser = "admin"; 
    String connectionPassword = "root"; 

    conn = DriverManager.getConnection(connectionUrl, connectionUser,  connectionPassword); 
    stmt = conn.createStatement(); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 

} 

和其它類擴展SQL類:

public class Kontostand extends SQL{ 

public String getKontostand(String kontoNr){ 

    String kontostand = ""; 

    try { 

     rs = stmt.executeQuery("SELECT * FROM konten WHERE KontoNr = '" + kontoNr + "'"); 


     while(rs.next()){ 
      kontostand = rs.getString("Kontostand"); 
     } 

    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 

    return kontostand; 
} 

但它只是爲我的小項目中我練習網發展...所以我不知道它是否適用於更大的項目

0

保持所有連接的東西在tatic方法並創建連接對象(如果爲空),否則返回現有連接對象。如果你想去全球第一選擇是靜態的。