一、JDBC是什么?
Java DataBase Connectivity(Java语言连接数据库)
二、JDBC的本质是什么?
JDBC是SUN公司制定的一套接口(interface)。
接口都有调用者和实现者。
面向接口调用、面向接口写实现类,这都属于面向接口编程。
三、为什么要面向接口编程?
解耦合:降低程序的耦合度,提高程序的扩展力。
多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
(这里需要画图带大家理解。。。)
四、为什么SUN制定一套JDBC接口呢?
因为每一个数据库产品都有自己独特的实现原理
五、JDBC编程六步(需要背会)
1.注册驱动(告诉Java程序,即将连接的是哪个品牌的数据库)
2.获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完后记得关闭通道)。
3.获取数据库操作对象(专门执行sql语句的对象)
4.执行SQL语句(DQL,DML…)
5.处理查询结果集 (只有当第四步执行的是select语句的时候,才有本步)
6.释放资源(使用完资源后一定要关闭资源,Java和数据库之间属于进程间的通信,开启之后一定要记得关闭)
六、IDEA编写JDBC连接MySQL
6.1 mysql-connector-java的不同版本对比
MySQL Connector / J 5.1 5.1版本支持java5及其以上的版本,支持5.6、5.7、8.0版本的mysql数据库,支持3.0、4.0、4.1、4.2版本的jdbc。在5.1中,Driver的实现类的全路径名是com.mysql.jdbc.Driver。
MySQL Connector / J 8.0 8.0版本支持java8及其以上的版本,支持5.6、5.7、8.0版本的mysql数据库,支持4.2版本的jdbc。在8.0中,Driver的实现类的全路径名是com.mysql.cj.jdbc.Driver。
下图是官网上mysql-connector-java的版本对应的mysql版本和jdk的版本。
6.2 下载驱动jar包 mysql-connector-java.
要使用mysql连接器,就要先下载它。如果是一般的项目,那我们需要下载jar包,然后放到项目的lib目录下。如果使用maven构建的项目,我们可以通过maven直接安装。不同的下载方式有不同的操作,常见的有直接官网下载和maven下载(下周讲解maven)。 下载jar包最直接的方式是从官网下载,官网地址是:https://dev.mysql.com/downloads/connector/j/。直接点链接进入mysql官网,选择所需的版本和操作系统(要下载jar包就要选:Platform Independent),然后点击download按钮就可以下载了。为java提供的连接器是Connector / J,也就是mysql-connector-java,它分为5.1版本和8.0版本。Connector / J实现了JDBC,为使用java开发的程序提供连接,方便java程序操作数据库。
6.3、从maven安装 使用maven安装mysql-connector-java就简单很多,直接打开maven的中央仓库地址,输入mysql-connector-java就可以找到不同版本的依赖。地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
6.4 JDBC连接mysql 程序编写
6.4.1 第一种注册驱动方式
DriverManager.registerDriver(Driver driver)
6.4.2第二种注册驱动方式
Class.forName("xxx.xx.xx.Driver")
6.4.3 将连接数据库的所有信息配置到配置文件中
driver=com.mysql.jdbc.Driver url=jdbc:mysql://192.168.209.100:3306/bigdata27?useUnicode=true&characterEncoding=utf-8&useSSL=false username=root password=123456
6.4.4 处理查询结果集
6.4.5 解决sql注入问题
将原本的先拼接再编译,使用预编译数据库操作对象后变成了先编译再拼接赋值
6.4.6 工具类封装
package com.shujia.utils; import java.io.BufferedReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.util.Properties; public class MysqlTool { private static Connection conn; private MysqlTool(){} public static Connection getConnection(){ try { //读取配置文件,获取driver,url,username,password //创建配置文件对象 Properties prop = new Properties(); //加载配置文件 prop.load(new BufferedReader(new FileReader("mysql-jdbc/src/main/resources/mysqlinfo.properties"))); //根据key获取value值 String driver = prop.getProperty("driver"); String url = prop.getProperty("url"); String username = prop.getProperty("username"); String password = prop.getProperty("password"); //1、加载驱动 Class.forName(driver); //2、创建与数据库之间的连接 conn = DriverManager.getConnection(url, username, password); }catch (Exception e){ e.printStackTrace(); } return conn; } public static void printResultSet(ResultSet resultSet){ try { while (resultSet.next()) { int columnCount = resultSet.getMetaData().getColumnCount(); StringBuilder sb = new StringBuilder(); for(int i=1;i<=columnCount;i++){ sb.append(resultSet.getString(i)).append("\t"); } System.out.println(sb); } }catch (Exception e){ e.printStackTrace(); } } }
6.4.7 JDBC实现模糊查询
select * from 表名(tablename) where 字段名(xxx) like '%关键词(xxx)%'
JDBC事务机制: 1.JDBC中的事务自动提交的,什么是自动提交? 只要执行任意一条 DML语句,则自动提交一次。这是JDBC默认的事务行为。
但是在实际的业务中,通常都是N条DML语句共同联合才能完成,必须 保证这些DML语句在同一个事务中同时成功或者同时失败
解决方案:三行重要的代码 conn.setAutoCommit(false);//手动提交事务
conn.commit();//提交事务
conn.rooback;当发生异常时或者程序错误时,进行回滚。
6.5 悲观锁和乐观锁的概念
事务1–>读取到版本号1.1 事务2—>读取到版本号1.1
其中事务1先修改了,修改之后看了版本号是1.1 ,于是提交修改的数据,将版本号修改为1.2 其中事务2后修改的,修改之后准备提交的时候,发现版本号是1.2 ,和它最初读的版本号不一致。回滚。
悲观锁:事务必须排队执行。数据锁住了,不允许并发。 (行级锁: select后面添加for update ) 乐观锁:支持并发,事务也不需要排队,只不过需要一个版本号。
标签:JDBC,java,数据库,Mysql,6.4,版本,mysql From: https://www.cnblogs.com/SIKE231310/p/17832689.html