我想確定我是否實際使用JDBC連接池。在做了一些研究之後,實現幾乎看起來太簡單了。實際上比常規連接更容易,所以我想驗證一下。我是否使用JDBC連接池?
這裏是我的連接類:
public class DatabaseConnection {
Connection conn = null;
public Connection getConnection() {
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName("com.mysql.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost:3306/data");
bds.setUsername("USERNAME");
bds.setPassword("PASSWORD");
try{
System.out.println("Attempting Database Connection");
conn = bds.getConnection();
System.out.println("Connected Successfully");
}catch(SQLException e){
System.out.println("Caught SQL Exception: " + e);
}
return conn;
}
public void closeConnection() throws SQLException {
conn.close();
}
}
這是真的連接池?我正在使用另一個類的連接,因此:
//Check data against database.
DatabaseConnection dbConn = new DatabaseConnection();
Connection conn;
ResultSet rs;
PreparedStatement prepStmt;
//Query database and check username/pass against table.
try{
conn = dbConn.getConnection();
String sql = "SELECT * FROM users WHERE username=? AND password=?";
prepStmt = conn.prepareStatement(sql);
prepStmt.setString(1, user.getUsername());
prepStmt.setString(2, user.getPassword());
rs = prepStmt.executeQuery();
if(rs.next()){ //Found Match.
do{
out.println("UserName = " + rs.getObject("username") + " Password = " + rs.getObject("password"));
out.println("<br>");
} while(rs.next());
} else {
out.println("Sorry, you are not in my database."); //No Match.
}
dbConn.closeConnection(); //Close db connection.
}catch(SQLException e){
System.out.println("Caught SQL Exception: " + e);
}
哇,謝謝你的重寫。爲像我這樣的新人提供完美的幫助。 – ryandlf
此解決方案是線程安全嗎?我需要調用connection.close(); – swapyonubuntu
@swapyonubuntu:密切與新的Java7'嘗試與 - resources'自動完成語句https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – BalusC