JDBC编程笔记

发布于:2025-07-31 ⋅ 阅读:(26) ⋅ 点赞:(0)

1. 通过代码操作数据库的基本流程

  • 实际开发中,数据库操作很少直接用命令行或图形化客户端。
  • 更多场景是通过代码(C++、Java、Python、Go等)进行数据库操作。
  • 前提:数据库需提供API供程序调用,这些API通常被封装成“库”。
  • Java有自己的API标准,各数据库需将自身API适配成Java标准API(即JDBC)。

2. JDBC的定义与作用

  • JDBC(Java Database Connectivity)是Java访问数据库的标准API。
  • 各数据库需提供兼容JDBC的驱动(如MySQL的mysql-connector)。
  • 使用JDBC,开发者只需学习一套API即可操作多种数据库。

3. 驱动与第三方库

  • 数据库厂商会提供JDBC驱动(如MySQL的mysql-connector.jar)。
  • 这些驱动通常以.jar文件形式提供,需要手动下载并导入项目(如通过Maven中央仓库)。

4. JDBC操作数据库的标准步骤

  1. 创建数据源

    • 通过MysqlDataSource等设置数据库连接信息(URL、用户名、密码)。

    • 例如:

      MysqlDataSource dataSource = new MysqlDataSource();
      dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/exercise?characterEncoding=utf8&useSSL=false");
      dataSource.setUser("root");
      dataSource.setPassword("aa1234");
      
  2. 建立连接

    • 调用dataSource.getConnection()获取数据库连接对象。
  3. 构造SQL语句

    • 推荐使用PreparedStatement预编译SQL,提升效率并防止SQL注入。

    • 例如:

      String sql = "insert into student(name) values(?)";
      PreparedStatement statement = connection.prepareStatement(sql);
      statement.setString(1, name);
      
  4. 执行SQL语句

    • 查询用executeQuery(),增删改用executeUpdate()
  5. 处理结果

    • 查询结果通过ResultSet遍历处理。

    • 例如:

      while (resultSet.next()) {
          System.out.println(resultSet.getInt("id"));
          System.out.println(resultSet.getString("name"));
      }
      
  6. 释放资源

    • 按照创建顺序的逆序关闭ResultSetStatementConnection等资源。

5. JDBC的局限与框架的出现

  • 直接使用JDBC编写代码繁琐、重复度高,容易出错。
  • 为简化开发,出现了如MyBatis等基于JDBC的ORM框架,对JDBC进行封装和简化。
  • 这些框架主要解决“通用场景”,但对于某些特殊需求,仍需开发者具备底层JDBC操作能力,对框架进行定制或扩展。

6. 总结

  • 框架的本质是为了解决通用问题,提高开发效率。
  • 但开发者仍需掌握底层原理和操作,才能在遇到特殊场景时灵活应对。

代码示例总结

// 1. 创建数据源
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/exercise?characterEncoding=utf8&useSSL=false");
dataSource.setUser("root");
dataSource.setPassword("aa1234");

// 2. 建立连接
Connection connection = dataSource.getConnection();

// 3. 构建SQL
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);

// 4. 执行SQL
ResultSet resultSet = statement.executeQuery();

// 5. 遍历结果集
while (resultSet.next()) {
    System.out.println(resultSet.getInt("id"));
    System.out.println(resultSet.getString("name"));
}

// 6. 关闭资源
resultSet.close();
statement.close();
connection.close();

网站公告

今日签到

点亮在社区的每一天
去签到