JDBC--Java Database Connectivity
发布日期:2021-04-30 21:01:09 浏览次数:103 分类:精选文章

本文共 1925 字,大约阅读时间需要 6 分钟。

JDBC(Java DataBase Connectivity)是Java语言访问各种关系型数据库管理系统(DBMS)提供的统一访问接口。通过JDBC,Java程序可以对多种数据库进行操作。

JDBC API的主要功能

JDBC API主要通过以下类/接口实现三件事:

  • DriverManager:管理JDBC驱动。
  • Connection:连接数据库(通过DriverManager创建)。
  • Statement/PreparedStatement:执行SQL语句或预编译的SQL语句。
  • Connection的作用

    • 通过Connection产生Statement、PreparedStatement和CallableStatement
      • createStatement() 创建Statement对象。
      • prepareStatement(String sql) 创建PreparedStatement对象,用于预编译SQL语句。
      • prepareCall() 创建CallableStatement对象,用于调用数据库存储过程或存储函数。

    Statement的操作

    • 增删改:通过executeUpdate(String sql) 方法执行。
    • 查询:通过executeQuery(String sql) 方法查询数据。

    ResultSet的操作

    • 结果集处理
      • 使用ResultSet对象保存查询结果。
      • next() 方法:光标下移,判断是否还有下一条数据。
      • previous() 方法:光标上移,判断是否有上一条数据。
      • getXxx(字段名/位置) 方法:获取指定字段的值。

    PreparedStatement的优势

    • 与Statement的区别
    • Statement
      • 直接传入SQL语句。
      • 通过executeUpdate(String sql) 执行。
    • PreparedStatement
      • 在创建时传入SQL语句(可能包含占位符)。
      • 通过prepareStatement(String sql) 预编译SQL语句。
      • 执行时使用setXxx() 方法替换占位符。

    使用PreparedStatement的优势

  • 编码简便

    • 使用占位符代替字符串拼接,减少SQL注入风险。
    • 示例:
      String sql = "INSERT INTO student(stuno, stuname) VALUES (?, ?)";PreparedStatement pstmt = connection.prepareStatement(sql);pstmt.setString(1, name);pstmt.setInt(2, age);pstmt.executeUpdate();
  • 性能提升

    • 预编译只需执行一次,减少重复执行开销。
    • 适用于大量数据操作。
  • 安全性增强

    • 防止SQL注入攻击。
    • 示例:
      // SQL注入风险String uname = request.getParameter("username");String sql = "SELECT count(*) FROM login WHERE uname=' " + uname + "' OR 1=1 --'";
  • JDBC访问数据库的步骤

  • 导入驱动:加载具体的驱动类。
  • 建立连接:通过DriverManager.getConnection() 获取连接。
  • 发送SQL:使用Statement/PreparedStatement发送SQL命令。
  • 处理结果集:处理查询结果。
  • 数据库驱动

    • 驱动 jar:包含特定数据库的驱动类和连接字符串。
    • 常见数据库驱动
      • Oracle
        • 驱动文件:ojdbc-x.jar
        • 驱动类:oracle.jdbc.OracleDriver
        • 连接字符串:jdbc:oracle:thin:@localhost:1521:ORCL
      • MySQL
        • 驱动文件:mysql-connector-java-x.jar
        • 驱动类:com.mysql.jdbc.Driver
        • 连接字符串:jdbc:mysql://localhost:3306/数据库实例名
      • SqlServer
        • 驱动文件:sqljdbc-x.jar
        • 驱动类:com.microsoft.sqlserver.jdbc.SQLServerDriver
        • 连接字符串:jdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名

    JDBC的优势

    • 灵活性:支持多种数据库。
    • 易用性:提供统一的数据库访问接口。
    • 性能优化:通过预编译和优化减少开销。
    • 安全性:防止SQL注入和XSS攻击。
    上一篇:Hive下查看表占用空间大小的方法
    下一篇:搭建Maven私服-Nexus

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2026年06月11日 10时17分50秒