常用连接池的使用(jdbc)java 连接数据库

C3P0

导入依赖

    
    
      c3p0
      c3p0
      0.9.1.2
    
    
    
      mysql
      mysql-connector-java
      8.0.28
    

接下来是代码

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

导入依赖


    
    
        com.alibaba
        druid
        1.2.6 
    
    
    
    
        mysql
        mysql-connector-java
        8.0.23 
    

代码

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,但也建议尽可能升级到较新的驱动版本。

你可能感兴趣的:(数据库,maven,java,jsp,mysql,idea,intellij-idea)