JDBC简介

本文详细介绍了JDBC的基础知识,包括其定义、重要接口和类,以及如何通过JDBC进行数据库操作,如加载驱动、创建连接、执行SQL语句等,并提供了具体的增删改查示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDBC基础知识

什么是JDBC?

JDBC就是 java database Connector java与数据库的连接器,就是一套接口,是Java代码与数据库的桥梁.

重要的接口和类:

Java.sql.Connection(连接接口,代表了Java代码与数据库服务器之间的连接).

Java.sql.Statment(语句接口,代表了语句对象,可以用来执行各种sql语句).

Java.sql.ResultSet(结果集接口,代表查询的结果).

DriverManager(驱动管理器)辅助类,获取Connection连接.

Java.sql.Driver(驱动接口).

java.sql.SQLException 检查异常,需要处理.

JDBC的实现需要各个数据库厂商提供.

JDBC的开发步骤:

1.加载驱动

Class.forNanme("驱动类名");

2.创建数据库连接:

Connection conn=DricerManager.getConnection(连接字符串,用户名,密码);

3,创建Statment(Preparedstatment)对象

Statment stmt=conn.createStatment();

执行增删改:

int rows=exeuteUpdate(sql语句);

执行查询:

ResultSet rs =executeQuery(sql语句);

4.关闭资源

新增示例代码:

public static void insert() throws Exception{
    // 1. 加载驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
    // 2. 创建数据库连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=GMT%2B8&useSSL=false", "root" "root");
    // 3. 创建Statment对象,执行sql
    Statement stmt = conn.createStatement();
    // 返回值 int类型 代表影响的记录行数
    String sql = "insert into student(sid,sname,birthday,sex) values (null,'老炮儿','1999-1-1','男')";
    int x = stmt.executeUpdate(sql);
    System.out.println("影响的记录行数  x = " + x);
    // 4. 关闭资源 先打开的后关闭
    stmt.close(); // 关闭statement对象
    conn.close(); // 关闭数据库连接	
}

查询示例代码:

public static void select() throws Exception {
    // 1. 加载驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
    // 2. 创建数据库连接
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=GMT%2B8&useSSL=false", "root" "root");
    // 3. 创建Statment对象,执行sql
    Statement stmt = conn.createStatement();
    // executeQuery(sql)  执行sql的方法
    // 返回值ResultSet类型 代表影响的结果集
    String sql = "select sid,sname,birthday,sex from student";
    ResultSet rs = stmt.executeQuery(sql);
    // next()方法用来移动到下一行记录 getXXX方法用来获取某列数据
    while (rs.next()) {
        int sid = rs.getInt(1);
        String sname = rs.getString(2);
        Date birthday = rs.getDate(3);
        String sex = rs.getString(4);
        System.out.println(sid + " " + sname + " " + birthday + " " + sex);
    }
    // 4. 关闭资源 先打开的后关闭
    rs.close(); // 关闭ResultSet
    stmt.close(); // 关闭Statement对象
    conn.close(); // 关闭数据库连接
}

注意:

MySQL Connector/J 8.0.12 驱动连接时需要添加`serverTimezone=GMT%2B8`参数,否则会出现异常:java.sql.SQLException:

The server time zone value 'Öйú±ê׼ʱ¼ä',另外`GMT%2B8`也必须加,否则会出现连接方和数据库时区不一致问题.

在连接过程中一旦发生异常:java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed 需要添加`allowPublicKeyRetrieval=true`参数,此异常一种可能的发生情况是MySQL服务重启后,立刻用jdbc连接时.

WARN: Establishing SSL connection without server's identity verification is not recommended 要消除这个警告信息,需要加入参数

`useSSL=false`.

获取自增列的值:

Statement stmt = conn.createStatement();
String sql = "insert into student(sid,sname,birthday,sex) values (null,'老炮儿','1999-1-1','男')";
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
System.out.println(rs.getInt(1));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值