一文教你快速避开 JDBC 中常见的坑,网友:编写代码再也不翻车了
今日分享开始啦,请大家多多指教~
1.概念:
JDBC,即 Java Database Connectivity,java 数据库连接。是一种用于执行 SQL 语句的 Java API,它是 Java 中的数据库连接规范。这个 API 由 java.sql.,javax.sql. 包中的一些类和接口组成,它为 Java 开发人员操作数据库提供了一个标准的 API,可以为多种关系数据库提供统一访问。
1.1 jdbc 工作原理
JDBC 为多种关系数据库提供了统一访问方式,作为特定厂商数据库访问 API 的一种高级抽象,它主要包含一些通用的接口类。
JDBC 访问数据库层次结构:
1.2 JDBC 优势:
Java 语言访问数据库操作完全面向抽象接口编程
开发数据库应用不用限定在特定数据库厂商的 API
程序的可移植性大大增强
2.引入 mysql 的 jar 包
首先将 mysql-connector-jar 包放入项目的 lib 文件夹下:
建立 jar 包和项目之间的联系
接下来就可以使用 jdbc 进行编程了
3.jdbc 的使用
3.1 首先加载 mysql 的驱动程序
这里使用 Class.forName()加载依赖包,具体是怎么操作的呢?
我们知道 Class.forName() 方法要求 JVM 查找并加载指定的类到内存中,此时将"com.mysql.jdbc.Driver" 当做参数传入,就是告诉 JVM,去"com.mysql.jdbc"这个路径下找 Driver 类,将其加载到内存中。
看看 Driver 的源码:
这里 new 了一个 Driver 对象传给了 registerDriver
看看 DriverManager.registerDriver 这个方法做了什么:
如果该驱动尚未注册,那么将它添加到 registeredDrivers 中去。
此时,Class.forName(“com.mysql.jdbc.Driver”) 的工作就完成了,工作就是:将 mysql 驱动注册到 DriverManager 中去。接下来我们看是怎么进行调用的
3.2 建立数据库和 jvm 的链接
这里 getConnection 到底干了什么事情呢?
这里返回的 getConnection 方法,再看看这里的 getConnection。
首先看看这三个参数都代表着什么
在源码的此处用到了 url 以及 info
找到了最终 url 解释的位置:这里的 url 指的是数据库的链接,如果驱动器能够解析这个 url 找到此数据库就返回 true。
info 对象中保存的是使用数据库的成员和密码;
getConnection 的上述源码中首先利用类加载机制加载了 mysql’的驱动器,接下来遍历缓存中的驱动器查看是否存在当前驱动,存在就利用驱动进行数据库链接;
url 设置:
这里的链接根据不同数据库系统采用不同的协议格式,ip 地址选择链接本地的 ip 地址,也可以是 localhost;
3.3 执行 sql 语句
这里的 statement 负责执行 sql 语句:下面看看它到底干了什么
发送参数化的 sql 语句到数据库;
可以看到这里创建了一个 PreparedStatement 对象,去执行此操作;
这里执行之后的返回值是 ResultSet 格式,因此创建一个 resultset 去承接这个结果即可
3.4 显示查询结果;
今日份分享已结束,请大家多多包涵和指点!
如何获取?
转发分享此文,后台私信小编:“1”即可获取。(注:转发分享,感谢大家)
评论