当前位置: 首页 > news >正文

JDBC相关知识点

文章目录

      • 一、JDBC概述
      • 二、JDBC连接步骤
      • 三、驱动程序与第三方依赖
      • 四、常见问题处理
      • 五、与ODBC的关系
      • 六、完整示例代码
      • 七、关键概念总结

一、JDBC概述

  1. 定义

    • Java Database Connectivity,Java数据库连接API
    • 一套统一的接口(java.sql包),由数据库厂商提供实现类(驱动程序)
  2. 核心接口与类

    顶层接口
    ├── Driver         # 驱动程序接口(厂商实现)
    ├── Connection     # 数据库连接对象
    ├── Statement      # SQL语句执行对象
    │   ├── PreparedStatement  # 预编译SQL(防SQL注入)
    │   └── CallableStatement  # 存储过程调用
    └── ResultSet      # 查询结果集
    

二、JDBC连接步骤

  1. 加载驱动类

    // MySQL 8.x 驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
    
  2. 建立连接(TCP/IP)

    String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8";
    String username = "root";
    String password = "123456";
    Connection conn = DriverManager.getConnection(url, username, password);
    
    • URL格式jdbc:mysql://[IP地址]:[端口号]/[数据库名]?参数1&参数2
    • 常用参数
      useUnicode=true:启用Unicode支持
      characterEncoding=utf8:设置字符编码(防中文乱码)
  3. 创建Statement对象

    Statement stmt = conn.createStatement();
    
  4. 执行SQL语句

    // 执行DML(增删改)
    int rows = stmt.executeUpdate("INSERT INTO users VALUES (1, '张三')");// 执行查询
    ResultSet rs = stmt.executeQuery("SELECT * FROM users");
    while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");
    }
    
  5. 关闭资源(反向关闭)

    rs.close();
    stmt.close();
    conn.close();
    

三、驱动程序与第三方依赖

  1. 驱动分类

    • JDBC-ODBC桥(早期):通过ODBC访问数据库
    • 纯Java驱动(主流):如MySQL的mysql-connector-java
  2. 添加依赖

    • Maven项目:在pom.xml中添加:
      <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version>
      </dependency>
      
    • 非Maven项目:手动下载JAR包并添加到类路径

四、常见问题处理

  1. 中文乱码

    • 数据库表字符集设置为utf8mb4
    • JDBC URL添加参数:?useUnicode=true&characterEncoding=utf8
  2. 端口号冲突

    • MySQL默认端口:3306
    • 查看端口占用:netstat -ano | grep 3306
    • 修改MySQL端口:编辑my.cnf配置文件

五、与ODBC的关系

  • ODBC(Open Database Connectivity):微软推出的跨平台数据库访问标准(C语言接口)
  • JDBC与ODBC对比
    特性JDBCODBC
    语言Java专用跨语言(C/C++为主)
    驱动纯Java实现需本地库支持
    应用场景Java应用程序跨平台应用

六、完整示例代码

import java.sql.*;public class JdbcExample {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydb";String user = "root";String password = "123456";try (Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT * FROM users")) {while (rs.next()) {System.out.println("ID: " + rs.getInt("id") +", Name: " + rs.getString("name"));}} catch (SQLException e) {e.printStackTrace();}}
}

七、关键概念总结

  • 接口回调:JDBC通过接口定义标准,厂商实现具体逻辑(如Driver接口)
  • 端口号作用:标识主机上的特定进程(如MySQL服务监听3306端口)
  • 反向关闭原则:后创建的资源先关闭(ResultSet → Statement → Connection)
http://www.lryc.cn/news/587032.html

相关文章:

  • Spring高级特性——反射和动态代理的性能优化
  • Gin框架统一响应与中间件机制学习笔记
  • spring--xml注入时bean的property属性
  • 数据结构 单链表(2)--单链表的实现
  • 【SSM】SpringBoot 实现邮件发送
  • C++--List的模拟实现
  • 代码随想录day29贪心算法3
  • 【编程实践】利用open3d生成物体的最长边方向并可视化
  • cmap=‘brg’ 在编程中的使用指南
  • python代码块的表示方法
  • 2.3 单链表的应用
  • LLM对话框项目总结II
  • 封装---优化try..catch错误处理方式
  • Autotab:用“屏幕录制”训练AI助手,解锁企业级自动化新范式
  • Struts2框架对重定向URL处理不当导致的OGNL注入漏洞(s2-057)
  • [Rust 基础课程]选一个合适的 Rust 编辑器
  • Java设计模式之行为型模式(命令模式)介绍与说明
  • 高效图片工厂:Python批量生成定制尺寸和格式的图片
  • 动物世界一语乾坤韵芳华 人工智能应用大学毕业论文 -仙界AI——仙盟创梦IDE
  • EtherCAT开源主站 SOEM 2.0 最新源码在嵌入式 Linux 下的移植与编译
  • Maven 构建命令
  • Java结构型模式---外观模式
  • 扩散模型(Diffusion Model)原理概述
  • Python装饰器(自定义装饰器和3个内置装饰器)
  • Java 大视界 -- Java 大数据在智能教育学习资源智能分类与标签优化中的应用(346)
  • Java小白-线程 vs 虚拟线程,Java并发的新旧对决
  • 垃圾收集器-Serial Old
  • 教程:如何查看浏览器扩展程序的源码
  • 【操作系统-Day 5】通往内核的唯一桥梁:系统调用 (System Call)
  • 飞算 JavaAI 智能编程助手:颠覆编程旧模式,重构开发生态