常用连接池的使用(jdbc)java 连接数据库
C3P0
导入依赖
<!-- https://mvnrepository.com/artifact/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
接下来是代码
ComboPooledDataSource dataSource =new ComboPooledDataSource(); 获取c3p0数据源
dataSource.setDriverClass("com.mysql.jdbc.Driver"); 注册驱动
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/db2"); 用你自己的数据库,db2是我的可以改你的
dataSource.setUser("root"); 填你自己的账号
dataSource.setPassword("mmmm"); 填你自己的密码
Connection connection = dataSource.getConnection(); 获取连接池
PreparedStatement ps = connection.prepareStatement("INSERT INTO user VALUES (?, ?, ?)");
ps.setInt(1, 120); // 设置第一个占位符的值为 120,注意索引是从1开始的
ps.setString(2, "l11xxx111"); // 设置第二个占位符的值为 "l11xxx111"
ps.setInt(3, 1051); // 设置第三个占位符的值为 1051
ps.executeUpdate();
ps.close();
Druid
导入依赖
<dependencies>
<!-- Druid 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version> <!-- 根据你的需求使用合适的版本 -->
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version> <!-- 根据你的数据库版本使用合适的版本 -->
</dependency>
</dependencies>
代码
import com.alibaba.druid.pool.DruidDataSource;
// ...
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/db2");
dataSource.setUsername("root");
dataSource.setPassword("mmmm");
// 设置其他 Druid 数据源属性,根据需要配置
Connection connection = dataSource.getConnection();
PreparedStatement ps = connection.prepareStatement("INSERT INTO user VALUES (?, ?, ?)");
ps.setInt(1, 120);
ps.setString(2, "l11xxx111");
ps.setInt(3, 1051);
ps.executeUpdate();
// 关闭资源
ps.close();
connection.close();
dataSource.close(); // 关闭 Druid 数据源
java 原生连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class JDBCDemo {
public static void main(String[] args) {
// JDBC连接的URL,这里的URL指向你的MySQL数据库
String url = "jdbc:mysql://localhost:3306/db2";
String username = "root";
String password = "mmmm";
try {
// 加载驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 获取数据库连接
Connection connection = DriverManager.getConnection(url, username, password);
// SQL语句,使用占位符
String sql = "INSERT INTO user VALUES (?, ?, ?)";
// 创建 PreparedStatement 对象
PreparedStatement ps = connection.prepareStatement(sql);
// 设置占位符的值
ps.setInt(1, 120);
ps.setString(2, "l11xxx111");
ps.setInt(3, 1051);
// 执行插入操作
int affectedRows = ps.executeUpdate();
System.out.println("Inserted " + affectedRows + " row(s).");
// 关闭资源
ps.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
易错bug
dataSource.setDriverClass("com.mysql.jdbc.Driver"); 他可以换成
dataSource.setDriverClass("com.mysql.cj.jdbc.Driver
");
原因如下:
在过去的 MySQL 版本中,常用的 JDBC 驱动类是com.mysql.jdbc.Driver
。然而,MySQL 在 Connector/J 5.x 版本之后,推荐使用新的驱动类com.mysql.cj.jdbc.Driver
,这是 MySQL 8.x 版本及以上的推荐使用的驱动类。
所以,你可能会在一些代码示例中看到使用com.mysql.jdbc.Driver
,而在另一些示例中看到com.mysql.cj.jdbc.Driver
。为了确保兼容性和推荐性,最好使用最新的 MySQL Connector/J 驱动,并使用com.mysql.cj.jdbc.Driver
。
如果你使用的是 MySQL 8.x 版本,建议使用com.mysql.cj.jdbc.Driver
。如果使用的是较旧的 MySQL 版本,你可能会看到com.mysql.jdbc.Driver
,但也建议尽可能升级到较新的驱动版本。