JDBC是什么、怎么使用。

一、JDBC基础

(1)JDBC是什么?

Java DataBase Connectivity(Java语言连接数据库)

(2)JDBC的本质是什么?

JDBC是SUN公司制定的一套接口(interface)、提供了一套接口。

(3)为什么SUN公司制定一套JDBC接口呢?

 因为每一个数据库的底层实现原理不一样、Oracle数据库有自己的原理、MySQL数据库也有自己的原理、每一个数据库产品都有自己独特的实现原理。

(4) JDBC开发前的工作:

先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath中,

 以上的配置是针对文本编辑器方式开发,使用IDEA工具的时候,不需要配置以上的环境变量。

(5)JDBC编程六部

第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

获取静态代码块执行,在静态代码块中获取驱动的注册

第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭)

需要三个参数,url 、userid、password

第三步:获取数据库操作对象(专门执行SQL语句的对象)

叫statement,createStatement

第四步:执行SQL语句(DQL DML)

执行DML语句用excute方法,返回Int类型,表示影响数据库的基本条数。

执行DQL语句用query和select,返回查询结果集,ResultSet。

第五步:处理查询结果集(只有当第四步执行的是Select语句的时候,才有这第五步的处理查询结果集)

While(rs.next()){}有数据返回true,没有数据返回false。通过.getString("")可以获取

第六步:释放资源(使用完资源之后一定要关闭资源,Java和数据库属于进程间的通信,开启之后一定要关闭。)

二、使用idea加载jdbc

(1)打开 Open Module Settings

(2)点击Libraries

(3)点击+号和Java

(4) 选择路径

 三、JDBC事务

JDBC事务,它是自动提交的,只要执行任意一条DML语句,则自动提交一次,这是JDBC默认的行为,但是在实际的业务当中,通常都是N条DML语句共同联合才能完成的,必须保证他们这些DML语句在同一个事务中同时成功或失败。

所以我们加入了三行代码,将自动改为手动提交。

 conn.setAutoCommit(false);
 conn.commit();
 conn.rollback();
 Connection conn = null;
        PreparedStatement ps = null;
        try {
//            1、注册驱动
            Class.forName("com.mysql.jdbc.Driver");
//            2、获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","123");
//            3、获取预编译的数据库操作对象
            String sql = "update t_user set loginName= ? where id= ? ";
            ps.setString(1,"zhaoxioadong");
            ps.setInt(2,1);
            int count = ps.executeUpdate();
            System.out.println(count);
//            重新给占位符传值
            ps.setString(1,"liuyiming");
            ps.setInt(2,2);
             count = ps.executeUpdate();
            System.out.println(count);

        } catch (Exception e) {
            e.printStackTrace();
        }

这一行代码就表示了,我将zhaoxiaodong和liuyiming都更新了,它才能一起往数据库更新操作。

四、行级锁

ename jpb sal version
|BLAKE| |MANAGER| |2850.00| 1.1

事务1-->读取到版本号1.1

事务2-->读取到版本号1.1

其中事务1先修改了,修改之后看了版本号1.1,于是提交修改的数据,将版本号修改为1.2

其中事务2后修改的,修改之后准备提交的时候,发现版本号1.2,和它最初读的版本号不一致,回滚。

悲观锁:事务必须排队执行,数据锁住了,不允许并发。

乐观锁:支持并发,事务也不需要排队,只不过需要一个版本号。

猜你喜欢

转载自blog.csdn.net/MyxZxd/article/details/107563963