我已经从代码中的数据中获取数据库连接,现在我需要将此Db实例保持全局,并且需要在项目的其他部分中使用。
请指导我。
我有以下代码
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 :(得分:0)
a)考虑数据库连接池,请参阅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;
}
}
答案 1 :(得分: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;
}
但它仅适用于我练习网络开发中的小项目...所以我不知道它是否适用于更大的项目
答案 2 :(得分:0)
将所有连接内容保存在静态方法中,如果为null则创建连接对象,否则返回现有连接对象。如果你想要全球第一选择是静态的。