Java连接数据库的五种方式(附新增方式)

*常用第五种方式

方式一

@Test
public void Test() throws SQLException {
    //创建数据库的驱动 mysql下的驱动
    Driver driver = new com.mysql.cj.jdbc.Driver();
    //url 代表要访问指定的数据库名 访问路径
    //jdbc: 主协议  mysql:  子协议
    //localhost 本机ip
    //3306  端口号
    //jdbc_learn  数据库名字 以及编码格式
    String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";

    //获取一个处理配置文件的对象
    Properties pro = new Properties();
    //传入用户名和密码
    pro.setProperty("user","root");
    pro.setProperty("password","123456");
    //用mysql驱动获取一个连接对象
    Connection conn = driver.connect(url,pro);
    System.out.println(conn);
}

方式二

@Test
public void Test1() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
    //利用反射获取驱动的类
    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
    //用驱动的类获取一个驱动对象
    Driver driver = (Driver) aClass.newInstance();

   String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
   Properties pro = new Properties();
   pro.setProperty("user","root");
   pro.setProperty("password","123456");

    Connection connect = driver.connect(url,pro);
    System.out.println(connect);
}

方式三

@Test
public void Test2() throws ClassNotFoundException, IllegalAccessException, InstantiationException, SQLException {
    //利用反射获取驱动的类
    Class<?> aClass = Class.forName("com.mysql.cj.jdbc.Driver");
    //用驱动的类获取一个驱动对象
    Driver driver = (Driver) aClass.newInstance();

    String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
    String user = "root";
    String password = "123456";

    //注册驱动
    DriverManager.registerDriver(driver);
    //获取连接
    Connection conn = DriverManager.getConnection(url, user, password);
    System.out.println(conn);
}

方式四

@Test
public void Test3() throws ClassNotFoundException, SQLException {
    String url = "jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
    String user = "root";
    String password = "123456";

    //Driver类再加载的时候已经注册了驱动 所以不必再写多余的代码
    Class.forName("com.mysql.cj.jdbc.Driver");

    //获取连接
    Connection conn = DriverManager.getConnection(url, user, password);
    System.out.println(conn);
}

方式五

将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接

1.编写配置文件 jdbc.properties 位置在模块的src下

user=root
password=253797
url=jdbc:mysql://localhost:3306/jdbc_learn?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
DriverClass=com.mysql.cj.jdbc.Driver

2.编写主体代码

@Test
public void Test4() throws ClassNotFoundException, SQLException, IOException {
    //创建容器 处理配置文件
    Properties pro = new Properties();
    //将配置文件放入一个输出流中
    FileInputStream fis = new FileInputStream("src//jdbc.properties");
    
    //加载配置文件到容器中
    pro.load(fis);
    //注册驱动
    Class.forName("DriverClass");

    //方法调用容器中的属性
    Connection conn = DriverManager.getConnection(pro.getProperty("url"),pro.getProperty("user"),pro.getProperty("password"));
    System.out.println(conn);
}

方式五(额外写法)

@Test
public void Test5() throws IOException, ClassNotFoundException, SQLException {

    //通过类的加载器创建一个输出流  获取类路径下的指定文件的输出流
    InputStream is = Collection.class.getClassLoader().getResourceAsStream("jdbc.properties");
    //创建容器对象  用于处理配置文件
    Properties pro = new Properties();
    //加载配置文件到容器中
    pro.load(is);

    //注册驱动
    Class.forName(pro.getProperty("DriverClass"));

    //将数据存到字符串中
    String url = pro.getProperty("url");
    String user = pro.getProperty("user");
    String password =  pro.getProperty("password");
    
    //获取连接
    Connection conn = DriverManager.getConnection(url,user,password);
    System.out.println(conn);

}

第五种的好处

*1.实现了数据与代码的分离。实现了解耦

*2.如里雪要修改配置文件信息,可以避免程序重新打包。

新增连接池——hikariCP

public class HikariJDBC {
    //创建连接池配置文件
    static HikariConfig hikariConfig = new HikariConfig();
    static {
        //对配置文件进行配置	内置很多配置选项
        hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
        hikariConfig.setJdbcUrl("jdbc:mysql://master:3306/school");
        hikariConfig.setUsername("root");
        hikariConfig.setPassword("123456");
        hikariConfig.addDataSourceProperty("useSSL", "false");
    }

    //每次调用方法就会从连接池中获取一个连接
    public static Connection getConnection() throws SQLException {
        //获取连接池
        HikariDataSource ds = new HikariDataSource(hikariConfig);
        
        return ds.getConnection();
    }


    //关闭连接
    public static void closeSource(Connection conn){
        try {
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以通过JDBC连接数据库,然后使用SQL语句来实现感知数据库新增数据的功能。具体步骤如下: 1. 加载数据库驱动程序,建立数据库连接。 2. 编写SQL语句,用于查询表中的数据。 3. 创建Statement对象,执行SQL语句,获取ResultSet结果集。 4. 遍历ResultSet结果集,获取新增的数据。 5. 关闭ResultSet、Statement对象和数据库连接。 下面是一个示例代码,用于感知MySQL数据库表中的新增数据: ```java // 加载数据库驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); // 编写SQL语句,用于查询表中的数据 String sql = "SELECT * FROM table WHERE create_time > ?"; // 创建PreparedStatement对象,设置参数,执行SQL语句,获取ResultSet结果集 PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setTimestamp(1, lastUpdateTime); ResultSet rs = pstmt.executeQuery(); // 遍历ResultSet结果集,获取新增的数据 while (rs.next()) { String id = rs.getString("id"); String name = rs.getString("name"); // ... } // 关闭ResultSet、PreparedStatement对象和数据库连接 rs.close(); pstmt.close(); conn.close(); ``` 需要注意的是,这里的lastUpdateTime参数可以用于记录上一次查询的时间,从而只查询新增的数据。另外,实际使用中还需要考虑多线程、事务等并发情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值