连接的五个步骤
第一步、注册驱动
Class.forName(“com.mysql.cj.jdbc.Driver”);
这个是Java反射中的一种写法,作用是获取当前提供路径的这个类的字节码文件(.class)。
得到这个字节码文件之后可以进行创建类、获取方法、属性、修饰符…
MySQL 中 class.forName 作用是什么
第一点:
sun公司希望每个数据库厂商的驱动类是通过JavaAPI创建的,除了为了有更好的兼容性还为了能否占有主动权。这样才能继续维护这个提供的标准接口。
第二点:
每个公司的驱动名称都是不一样的,既然想在JavaAPI创建这个驱动类,能提供的只有一个类的名称,也只有反射能够通过名称创建对象。
第三点:
Java编程规范角度来说,框架都是提取公共信息的,这些公共信息一般都会通过.properties
文件进行维护。 那么字符串的驱动切好可以放在这样的文件中, 达到一个速快切换数据库的效果。
第二步、创建连接
String url = “jdbc:mysql://localhost:3306/db_1208
?serverTimezone=GMT%2B8&useSSL=false”;
Connection connection =
DriverManager.getConnection(url, “root”, “root”);
DriverManager驱动管理类
作用:注册驱动 | 通过调用底层方法去帮助我们创建了一个连接。
各个数据库的URL 大全
https://www.cnblogs.com/chenglc/p/8421573.html
URL
JDBC:声明使用的是JDBC技术进行连接数据库
mysql:声明使用的是哪一种数据库,需要根据这个名称使用对应数据库的协议。
localhost:3306 连接地址及端口号信息
本地地址:
127.0.0.1
localhost
网络地址:192.22.41.110:3306
如果是本地请求数据库,整个地址+端口号可以直接省略,简写方式为:
String url = "jdbc:mysql:///db_1208?..
关于url中的问号
问号在URL地址中是一个连接符的作用,问号之前是具体的套接字(协议+地址+端口)+ 项目名称
问号之后跟随的是请求这个地址时的参数。多个参数使用&进行连接
谷歌中搜索淘宝得到的地址:
https://www.google.com/search?q=www.taobao.comn&oq=www.taobao.comn&aqs=chrome..69i57j69i58.5738j0j4&sourceid=chrome&ie=UTF-8
serverTimezone=GMT%2B8
服务器时区设置
5.1.*连接驱动没有这个问题,8.*版本需要指定一下时区。
useSSL=false
如果低版本的连接器(驱动包)连接高版本的数据库,需要使用useSSL = true;
如果是高版本的连接器连接低版本的数据库, 需要使用useSSL = false;
如果是第二种情况, 可以省略这个参数。
如果connection打印的时候正常返回对象,说明已经和数据库成功建立连接。
第三步、编译SQL
Statement st = connection.createStatement();
Statement是一个SQL的载体,在连接通道中输送SQL的必须对象。
第四步、发送SQL并返回结果
ResultSet rs = st.executeQuery(“select * from student”);
这个步骤的作用有2
第一个:向SQL载体中传一个SQL语句
第二个:这个方法executeQuery(),会给我们返回一个结果对象
结果对象类型:
executeQuery --> ResultSet :结果集(查询的时候返回)
execute --> boolean (增删改查)
executeUpdate --> int (增删改)
executeQuery:遍历取值
boolean b = rs.next(); 指针下一移位,判断是否有数据,如果有那么返回true
这样的写法指针是跟随者移动。
两种取值的方建议使用第一种。
execute 返回true|false(嫌弃)
功能是执行增删改(非常古老,除了讲课用用一次之外,其余都不用)
经过测试:增删改返回都是false 、 查询的时候返回的是true
这个方法可以用来执行增删改功能和判断当前语句是否是DML|DQL
executeUpdate 返回 int
可用来执行增删改
返回值,代表受影响的行数。 判断时候 i > 0 成功的。
第五步、释放资源
不释放的后果就是,在web工程中,项目会运行越来越慢。