是否实现了连接池? 我相信PostgreSQL JDBC驱动程序是线程安全的,但我不确定MYSQL。
我正在制作一个静态对象来处理这样的数据库连接 包com.amzi.DataAccess;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class DBUtil {
private static MysqlDataSource dataSource = null;
public static MysqlDataSource getDataSource() {
if (dataSource == null) {
dataSource = new MysqlDataSource();
dataSource.setUser("root");
dataSource.setPassword(""); // Put your password here
dataSource.setUrl("jdbc:mysql://localhost:3306/user_device_table");
}
return dataSource;
}
}
在另一个类中,我创建一个连接以查看是否存在记录。 完成连接后,我将其关闭。
public boolean ValidateLogin(User user) {
boolean status = false;
PreparedStatement ps = null;
ResultSet rs = null;
Connection connection = null;
try {
connection = DBUtil.getDataSource().getConnection();
ps = connection.prepareStatement("select * from users where user_name=? and password=?");
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
rs = ps.executeQuery();
status = rs.next();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return status;
}
答案 0 :(得分:0)
com.mysql.jdbc.jdbc2.optional.MysqlDataSource
是基本数据源。也就是说,它会创建连接,但不提供连接池。
它的连接创建使用基本的MySQL java.sql.Driver
实现,就像使用DriverManager.getConnection
一样。换句话说,它与驱动程序本身一样是线程安全的。
通常,建议使用连接池。使用应用程序/服务器(或Tomcat)提供的功能,或使用专用连接池库(例如HikariCP,DBCP等)。