您的位置:

JDBC: Java连接数据库的利器

JDBC(Java Database Connectivity)是Java连接数据库的标准API,它提供了一个通用的接口,使得Java程序可以和任何数据库连接,并执行诸如查询、插入和更新等操作。JDBC是Java访问数据库的门票,也是Java应用程序中不可或缺的一部分。

一、快速入门

下面是在Java程序中使用JDBC的一个简单示例:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCDemo {
  public static void main(String[] args) throws SQLException {
    // 1. 加载 JDBC 驱动程序
    Class.forName("com.mysql.jdbc.Driver");

    // 2. 创建数据库连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
        "username", "password");

    // 3. 创建 Statement 对象
    Statement stmt = conn.createStatement();

    // 4. 执行 SQL 查询
    ResultSet rs = stmt.executeQuery("SELECT * FROM users");

    // 5. 处理结果集
    while (rs.next()) {
      System.out.println(rs.getString("name"));
    }

    // 6. 释放资源
    rs.close();
    stmt.close();
    conn.close();
  }
}

上面的代码用JDBC连接到本地MySQL数据库,查询了一个users表的所有记录,并将每条记录的名字(name)打印到控制台。这段代码展示了JDBC连接数据库并执行SQL查询的基本步骤:

1. 加载JDBC驱动程序。

2. 创建数据库连接。

3. 创建Statement对象。

4. 执行SQL查询。

5. 处理结果集。

6. 释放资源。

二、获得连接

在JDBC中,使用Connection接口来表示数据库连接。连接到数据库需要用到以下三个参数:

  • url:表示数据库的URL,形如jdbc:database://host:port/database_name
  • username:表示数据库登录的用户名。
  • password:表示数据库登录的密码。

连接数据库的一种常见方式是使用DriverManager类,具体示例如下:

Connection conn = null;

try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test",
        "username", "password");
} catch (ClassNotFoundException | SQLException e) {
    e.printStackTrace();
}

三、执行SQL语句

执行SQL语句需要用到StatementPreparedStatement对象。

Statement可以执行任何类型的SQL语句,但是可能存在SQL注入的问题。代码示例如下:

Statement stmt = null;
ResultSet rs = null;

try {
    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT * FROM users WHERE id = " + id);
    while (rs.next()) {
        System.out.println(rs.getString("name"));
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    if (rs != null) {
        rs.close();
    }
    if (stmt != null) {
        stmt.close();
    }
}

PreparedStatement支持预编译的SQL语句,避免了SQL注入问题。代码示例如下:

PreparedStatement stmt = null;
ResultSet rs = null;

try {
    stmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
    stmt.setInt(1, id);
    rs = stmt.executeQuery();
    while (rs.next()) {
        System.out.println(rs.getString("name"));
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    if (rs != null) {
        rs.close();
    }
    if (stmt != null) {
        stmt.close();
    }
}

四、事务处理

JDBC支持事务处理,可以使用Connection接口的commitrollbacksetAutoCommit方法完成事务处理。

代码示例如下:

conn.setAutoCommit(false); // 关闭自动提交

try {
    // 执行多条SQL语句
    stmt1.execute();
    stmt2.execute();
    // 提交事务
    conn.commit();
} catch (Exception e) {
    // 回滚事务
    conn.rollback();
} finally {
    conn.setAutoCommit(true); // 恢复自动提交
}

五、连接池

使用JDBC连接数据库时,每次都需要创建连接对象、执行SQL语句和释放资源,这样会消耗大量的时间和资源,而且对于高并发的应用来说,可能会导致连接过多,从而导致数据库的性能下降。

连接池技术的出现就是为了解决这些问题。连接池会维护一些预先创建好的连接,并在需要时分配这些连接。通过连接池可以有效地避免连接过多和频繁创建连接对象的开销,提升应用性能。

常见的Java连接池有C3P0、Druid和HikariCP等。

以HikariCP举例,代码示例如下:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

public class ConnectionPoolDemo {
    private static HikariConfig config = new HikariConfig();
    private static HikariDataSource ds;

    static {
        config.setJdbcUrl("jdbc:mysql://localhost:3306/test");
        config.setUsername("username");
        config.setPassword("password");
        config.addDataSourceProperty("cachePrepStmts", "true");
        config.addDataSourceProperty("prepStmtCacheSize", "250");
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

        ds = new HikariDataSource(config);
    }

    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

六、总结

JDBC是Java访问数据库的重要手段,也是Java应用程序中不可或缺的一部分。本文主要介绍了如何连接数据库、执行SQL语句、进行事务处理和使用连接池。在实际应用中,根据业务需求选择合适的方法和工具来优化数据库访问,提升应用性能。

JDBC: Java连接数据库的利器

2023-05-11
连接mysql数据库笔记1(如何连接数据库mysql)

2022-11-10
jdbc连接mysql数据库时(JDBC数据库连接)

2022-11-11
jdbc连接mysql数据库书,jdbc与数据库连接

2022-11-18
jsp数据库笔记,jsp写入数据库

本文目录一览: 1、怎么用jsp连接mysql数据库 2、jsp中怎么使用数据库 3、JSP 从数据库中如何取得图片的路径? 怎么用jsp连接mysql数据库 一. 数据库的连接和操作笔记:1.初始化

2023-12-08
jsp使用java连接数据库(jsp连接数据库的方法)

本文目录一览: 1、怎么使用JAVA连接数据库? 2、怎么用jsp连接mysql数据库 3、在JSP页面中实现连接数据库与在Java程序中实现连接数据库有什么区别? 4、java 中 怎样将JSP页面

2023-12-08
Java JDBC连接数据库

2023-05-11
java数据库连接,java数据库连接库jdbc用到哪种设计

2023-01-09
Java数据库连接,java 连接数据库

2023-01-04
使用jdbc访问mysql数据库,java jdbc连接my

2022-11-22
Java JDBC连接数据库

2023-05-11
重学java笔记,java笔记总结

2022-11-23
mysqljdbc连接数据库步骤(如何使用jdbc连接数据库

2022-11-13
数据库连接java,数据库连接java登录界面

2022-12-02
Java连接数据库

2023-05-11
java连接数据库,java连接数据库实现登录

2023-01-09
jsp连接mysql数据库,jsp连接mysql数据库教程

2022-11-30
Java JDBC连接MySQL数据库

2023-05-11
jsp视图跟数据库简单的连接(jsp怎么连接数据库sql)

本文目录一览: 1、jsp如何连接数据库 2、如何用一张JSP页面连接数据库,实现查询,修改操作 3、如何用JSP连接SQLServer数据库 4、怎么用jsp连接mysql数据库 jsp如何连接数据

2023-12-08
Java连接数据库

2023-05-11