JDBC编程基础

前言

  1. JDBC是什么?

    JDBC的全称为Java Database Connectivity,它是Oracle公司为各数据库厂商提供的一套统一的、基于Java语言实现的编程接口规范(没有具体实现,具体实现由数据库厂商做)。这个接口在java.sql包中<br />为什么要有JDBC?
    
  2. 每一个数据库的底层都是不一样的Oracle有Oracle的原理,MySQL有MySQL的原理,如果没有一个统一的规范,那么操纵数据库的时候就需要有多套Java代码,这样是非常麻烦的。(笔者浅见:这挺符合java提倡的面向接口编程)在大家都遵循JDBC接口规范的基础上,不同的数据库厂商提供访问自家数据库的具体实现也就是JDBC驱动。操作不同的数据库无需关心其具体原理,只需要知道接口的方法即可对数据库进行操作。

JDBC编程具体步骤

1.注册驱动让你的Java程序知道要操纵的是哪家的数据库
2.获取数据库链接这是程序和数据库的一个链接通道,它可以将程序中需要使用的一系列sql语句发送到数据库中
3.获取操作对象用来执行sql语句
4.调用具体方法执行sql语句例如execquteQuery,execqueUpdate
5.处理查询之后获得的结果集(可以没有)只有执行select语句,才有可能会返回一个结果集
6.释放资源(十分重要)例如Connection资源是十分稀少珍贵的资源,用完一定要记得释放掉

user_info表
image.png

1.注册驱动以及获得数据库链接

public class DataProcessing
    // 用于判断是否链接成功
    private static boolean connectToDB = false;
	// 用于存储数据库连接对象
    public static Connection connection;
   /**
     * TODO 初始化,连接本地数据库
     */
    public static void init()  {
        String url = "jdbc:mysql://localhost:3306/自己的数据库名称";
        // 账号
        String user = "root";
        // 数据库密码
        String passWord = "123456";
        try {
            // 注意mysql版本8.0之后的驱动为com.mysql.cj.jdbc.Driver、
            // 8.0之前的版本为com.mysql.jdbc.Driver
            // 注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 获得数据库链接对象
            connection = DriverManager.getConnection(url, user, passWord);
            connectToDB = true;
        } catch (ClassNotFoundException | SQLException e) {
            System.out.println("数据库驱动加载失败!");
        }


    }
}

2.获得操作对象

Connection类的常用方法

  • createStatement(),创建Statement对象,执行_**静态 **_sql语句(个人不推荐使用,很容易犯错)
  • perparedStatement(String sql):预处理sql语句,参数为sql语句,返回PreparedStatement(推荐使用,效率高,且不容易犯错,并且一目了然)
  • close():关闭数据库链接(这个方法可以释放数据库链接资源,但常常被忘记比如笔者自己)

3.执行sql语句

PreparedStatement接口
继承自Statement,可以对sql进行预处理。可以给SQL语句通过问号(?)占位符设置参数,通过替换不同的值可以有效地被多次执行
image.png

  • executeQuery()方法,执行查询,返回ResultSet对象,也就是结果集
  • executeUpdate()方法,返回受影响的行数,例如插入了一条数据或者删除一条数据或者修改一条数据就会返回 1
  • setXXX()方法,主要是个每个?设定值(注意paramenterIndex是从1开始的,,也就是说第一个问问号就是1,第二个问号就是2),类型为XXX,如

image.png
具体使用哪种方法要根据自己的情况的判断(我的user_info表中role和password都是varchar,因此使用setString方法,如果有对应字段是timestamp就需要使用setTimestamp()方法)
image.png
?占位符的具体内容都设定好了之后就可以使用PreparedStatement对象的executeQuery或者executeUpdate方法,来执行相关的数据库的增删改查操作

4.处理结果集(只有返回了ResultSet对象才会使用)

image.png
ResultSet的next方法有点类似于迭代器的next方法和hasnext方法的结合

5.关闭链接

最后记得关闭数据库连接!

  • 41
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值