0

我已经建立了一个数据库连接来从代码中的数据中获取数据,现在我需要保持这个数据库实例是全局的,并且需要在项目的其他部分中使用。

请指导我。

我有以下代码

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();
    }
4

3 回答 3

0

将所有连接内容保存在静态方法中,如果它为 null,则创建连接对象,否则返回现有连接对象。如果你想去全局第一个选项是静态的。

于 2013-10-11T06:25:59.317 回答
0

a) 考虑使用 db 连接池,请参阅http://commons.apache.org/proper/commons-dbcp/ b) 如果您确实想使用 dbcp,则创建一个单例,用于连接到项目的某些部分。

在不了解您的项目的更多信息(单/多用户,基于网络)的情况下,很难提供更多建议。

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;   
 }
  }
于 2013-10-11T06:01:08.893 回答
0

我就是这样做的,但仅用于测试项目:

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;  
}

但这仅适用于我练习网络开发中的小项目......所以我不知道它是否适用于更大的项目

于 2013-10-11T06:10:49.237 回答