当前位置: 首页 > news >正文

JDBC上课总结(1)(JDBC核心API、JDBC基本编码步骤)(JDBC底层由来、使用)

目录

一、关于各种客户端与mysql(服务器端)的连接。

(1)DataGrip客户端连接mysql服务器端。

(2)Java程序客户端连接mysql服务器端。

(3)什么是JDBC?

二、JDBC底层由来、使用。

(1)JDBC出自。

(2)当今的数据库产品。(很多)

(3)JDBC诞生原因。

(4)Java程序(客户端)连接不同的数据库产品的解决方案。

(5)如何使用不同的数据库产品?

三、JDBC核心API。

(1)JDBC核心API位于哪个包。

(2)以生活的案例需要那些类。

(3)JDBC核心API。

1、DriverManger(驱动管理器)。

2、Connection对象。

3、Statement对象。

4、ResultSet对象。

四、JDBC的基本编码步骤。

1、导jar包。

2、导入数据库驱动——>加载驱动类。

3、得到Connection对象。

4、编写sql。

5、创建Statement对象。

6、使用Statement对象对数据库进行增删改查操作。

7、最后关闭资源。


一、关于各种客户端与mysql(服务器端)的连接。

(1)DataGrip客户端连接mysql服务器端。
  • DataGrip(数据库图形化界面)——>连接mysql(服务器)。
  • 它也是作为一个客户端。通过写sql语句,发送给mysql。在mysql中有一个sql引擎——执行sql语句、分析检查sql语法。执行完就会把结果返回给客户端(dp)

(2)Java程序客户端连接mysql服务器端。
  • Java程序——>连接mysql(服务器)。它是作为一个客户端。
  • 原先学习mysql时在DataGrip写sql语句,当然也可以在Java中写sql语句。
  • Java中写sql语句,需要通过网络发送给mysql服务器。这里不需要自己手动写TCP通信(Socket、ServerSocket、IO流读写操作)已经将底层封装好了。
  • 封装的东西——就是我们说的JDBC。


(3)什么是JDBC?
  • JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。

二、JDBC底层由来、使用。

(1)JDBC出自。
  • 早期是sun公司提供的(包括之前jdk也是),但现在被oracle公司收购并提供

(2)当今的数据库产品。(很多)
  • mysql。

  • oracle。

  • sqlServer。


(3)JDBC诞生原因。

  • java程序与数据库通信——>不同数据库产品,通信方式不一样,数据库产品商业化,不开源。所以jdk无法编写具体的实现代码,然后连接数据库
  • 不同数据库产品,连接技术不一样。如果让jdk实现jdbc的代码——>有新的数据库产品,jdk就要频繁的修改代码,实现连接新的数据库产品。这种方式很麻烦!

  • 早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了!
  • 后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是一组接口——JDBC),并提供连接数据库的协议标准。
  • 然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现。
(4)Java程序(客户端)连接不同的数据库产品的解决方案。
  • SUN公司提供的规范接口)命名为JDBC。而各个厂商提供的,遵循了JDBC规范的,可以访问自己数据库的API被称之为驱动
  • JDK中的JDBC只是提供一套标准——>提供了接口 (只有方法的签名,没有方法实现)
  • 具体某个数据库的连接的实现代码,由数据库厂家或第三方公司提供(数据库驱动)。


(5)如何使用不同的数据库产品?
  • 如果连接某个数据库,需要下载对应数据库产品的JDBC的实现类(数据库驱动)。
  • 也就是导入对应的jar包(一堆class的压缩文件)
  • 程序员写代码的好处——不需要大幅度改Java代码,只需要修改对应的数据库驱动。我们调用的具体实现类的方法。而不是调用接口。

  • 注意:JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接

  • 其中每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。

  • 当然还有第三方公司专门为某一数据库提供驱动,这样的驱动往往不是开源免费的。

三、JDBC核心API。

(1)JDBC核心API位于哪个包。
  • 位于java.sql包下。
(2)以生活的案例需要那些类。
  • 把数据库看成——仓库(存放原材料)——>这里数据库就是存储数据
  • 把Java程序看成——工厂。工厂单独作为一个客户端。
  • 工厂与仓库之间有一条"路"。工厂与仓库进行连接。Java中就是("路"——>核心对象"Connection")。
  • 工厂去取原材料,从工厂出发(需要"出库单"——>程序中对应sql语句)。然后需要用("车"——>核心对象"Statement")。拿着"出库单"到仓库取("原材料"——>查询:sql执行结果集——>核心对象"ResultSet")。如果是增、删、改操作,就需要返回受影响的行数。


(3)JDBC核心API。
  • JDBC中的核心类有:DriverManager(数据库驱动管理)、Connection、Statement,和ResultSet。

1、DriverManger(驱动管理器)。
  • 注册驱动:这可以让JDBC知道要使用的是哪个驱动。(如mysql)
  • 获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。
2、Connection对象。
  • 表示连接,与数据库的通讯都是通过这个对象展开的。
  • Connection最为重要的一个方法就是用来获取Statement对象
  • 也就是有一个"路"Connection——>就可以创建一个"车"Statement。

3、Statement对象。
  • 是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句
  • void executeUpdate(String sql):执行更新操作(insert、update、delete等)。
  • ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet


  • 如果是增、删、改返回的是影响的行数(row)。


  • 查询的sql返回的查询的结果集(ResultSet)
4、ResultSet对象。
  • 表示查询结果集,只有在执行查询操作后才会有结果集的产生。
  • 结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的“行光标”,以及获取当前行上的每一列上的数据。
  • boolean next():使“行光标”移动到下一行,并返回移动后的行是否存在。
  • XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。

  • 获取返回的表的数据(一行一行获取)
  • 返回是否有下一行,返回false就是到底了(结束)。
  • next()是指向数据表的表头行,一行一行往下指向。

  • 当next()移动到某一行时,它就可以拿对应这一行的各个列的数据。(有不同类型的)

  • 一堆getXXX()方法。其中对应的是两个重载方法。getXXX(String)、getXXX(int)
  • 其中"String":是根据列的名字查询。如果查询时写的是别名,就要写别名,而不是写本身的列名。
  • "int"是根据列的索引查询(从1开始。如1:表示第一列(第一个单元格的数据))




等等还有很多,可以自己去文档查找对应的方法。

四、JDBC的基本编码步骤。

1、导jar包。
2、导入数据库驱动——>加载驱动类。
  • 告诉java程序连接那个数据库产品。
  • Class.forName(“类名”);
3、得到Connection对象。
  • 得到Connection对象。使用驱动管理器类DriverManager的static方法getConnection()
  •  Connection conn = DriverManager.getConnection("参数1","参数2","参数3");

  • 参数1:数据库连接地址。(jdbcUrl)
  • 其中jdbcUrl的组成部分:1、jdbc协议。2、数据库类型。(产品)3、数据库地址。(服务器ip:端口)4、其他部分。
  • 如:Connection 对象= DriverManager.getConnection("jdbc:mysql://localhost:3306/test666?useSSL=false","root","123");

  • 参数2:用户名。(username)

  • 参数3:密码。(password)
4、编写sql。
  • 注意写法!!
  • Statement中只能写"拼接"sql——>编写复杂、容易出错、可读性差、会出现安全问题(sql攻击、sql注入)!
5、创建Statement对象。
  • 使用Connection得到Statement对象
  • Connection对象.createStatement();
6、使用Statement对象对数据库进行增删改查操作。
  • 如果是查询,得到ResultSet结果集——>解析数据(每一行每一列数据)。
  • 如果是增、删、改,得到受影响行数(int)。
7、最后关闭资源。

(倒序关闭——>"后创建的先关闭,先创建的后关闭")

  • ResultSet对象。
  • Statement对象。
  • Connection对象。

http://www.mrgr.cn/news/67840.html

相关文章:

  • 高效实现旺店通·企业奇门与金蝶云星辰V2数据集成
  • 【React】react-app-env.d.ts 文件
  • HTML简介与应用指南
  • 【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
  • 在线绘制带颜色标注的大脑脑区图
  • 模拟实现strcat函数
  • laravel chunkById 分块查询 使用时的问题
  • ES集群搭建(仅供自己参考)
  • 恢复rm -rf删除的数据
  • 源代码泄漏怎么办?SDC沙盒成为破局利器
  • UVM的callback机制
  • 网络规划设计师-(11)网络层
  • 上下文保护
  • 技术总结(二十二)
  • MySQL之事务
  • hive面试题,超详细解析。各类型专利top 10申请人,以及对应的专利申请数
  • python入门到精通知乎万赞推荐书籍《流畅的Python》,《流畅的Python》PDF免费下载
  • Hive中各种Join的实现
  • 【系统架构设计师】高分论文:论企业应用系统的分层架构风格
  • 数据结构之单链表(C语言)
  • linux基础知识
  • day-81 打家劫舍 II
  • 焊接覆层耐磨板行业全面且深入的分析
  • 【零基础学习CAPL】——XML工程创建与使用详解
  • uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
  • Java题目笔记(十四)Date +综合练习