day31-JDBC

本文详细介绍了如何使用JDBC进行数据库操作,包括加载驱动、连接数据库、执行SQL及释放资源的过程,并提供了Maven下载驱动的示例。重点讲解了`Class.forName`和`DriverManager.getConnection`的作用,适合初学者学习数据库连接管理。
摘要由CSDN通过智能技术生成

JDBC

数据库驱动,

SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个java操纵数据库的规范,这些规范的具体实现由厂商实现,我们只需要掌控JDBC接口的操作即可

在这里插入图片描述
java.sql
javax.sql
下面需要一些包
https://search.maven.org/
去maven那里下载

在这里插入图片描述

第一个JDBC程序
注意在项目中添加依赖
在这里插入图片描述

package jdbc;

import com.mysql.cj.jdbc.Driver;

import java.sql.*;

public class firstdemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //DriverManager.registerDriver(new Driver());
        //DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
        //2.用户信息
        String url = "jdbc:mysql://localhost:3306/tyblog?useSSL=true&useUnicode=true&characterEncoding=utf8";
        String username = "root";
        String password = "123456";
        //3.链接成功,数据库对象
        Connection connection = DriverManager.getConnection(url, username, password);
        //4.执行SQL的对象
        Statement statement = connection.createStatement();
        //5.执行SQL对象去执行SQL
        String sql = "select* from user";
        ResultSet resultSet = statement.executeQuery(sql);
        while(resultSet.next()){
            System.out.println(resultSet.getObject(1));
        }
        //6.释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

步骤总结:

  1. 加载驱动
  2. 连接数据库DriverManger
  3. 获得执行sql的对象Statement
  4. 获得返回的结果集
  5. 释放连接

解释

Class.forName("com.mysql.cj.jdbc.Driver");
//等同于
//DriverManager.registerDriver(new Driver());
//DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
//connection代表数据库
//数据库设置自动提交
//事务提交
//事务滚回

下面是Driver的源码

Driver
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
    public Driver() throws SQLException {
    }

    static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
}

因为写在静态块内,所以是可以直接加载来。

URL
        String url = "jdbc:mysql://localhost:3306/tyblog?useSSL=true&useUnicode=true&characterEncoding=utf8";
//	协议://主机地址:端口号/数据库名?参数1&参数2&参数3
//mysql默认端口是3306,oralce是1521
//mysql的协议是jdbc:mysql;oracle是jdbc:oracle

Statement执行SQL对象 PrepareStatement执行SQL对象

String sql = "select* from user";
statement.executeQuery(sql);//查询操作返回ResultSet
statement.execute(sql);//执行任何SQL
statement.executeUpdate(sql);//更新、插入、删除都是用这个,返回一个受影响的行数

ResultSet查询的结果集:封装了所有的查询结果获得指定的数据类型。

String sql = "select* from user";
ResultSet resultSet = statement.executeQuery(sql);
resultSet.getInt();
resultSet.getObject();

resultSet是光标设置的,
有以下函数可以移动光标至最后或最前

resultSet.beforeFirst();//移动到最前面
resultSet.afterLast();//移动到最后面
resultSet.next();//移动到下一个
resultSet.previous();//移动到前一行
resultSet.absolute(row);//移动到后面一个

释放资源

resultSet.close();
statement.close();
connection.close();

statement对象

jdbc中的statement对象用于向数据库发送SQL语句,想完成数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
statement对象的executeUpdate方法,用于向数据库发送增删改查的sql语句,executeUpdate执行完后,将会返回一个整数(CURD导致数据库改变了几行变化)
statement.executeQuery反法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象

实际中,会把很多信息放到对应的文件中,
比如说专门一个工具包写sql,一个专门的配置类写配置。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值