文章目录
- 一、数据库编程的必备条件
- 二、Java的数据库编程:JDBC
- 三、JDBC工作原理
- 四、JDBC开发步骤
- 五、JDBC操作步骤
- 六、优化JDBC的部分代码
-
- 1.获取数据库连接对象
- 2.操作命令对象Statement
- 3.ResultSet对象
- 4.总结
一、数据库编程的必备条件
编程语言: 如Java、C++、C、Python等
数据库: 如Oracle、MySQL、SQL Server等
数据库驱动包: 不同的数据库,要使用编程语言来操作时,就需要使用该数据库厂商提供的数据库驱动包。
如:MySQL提供了Java的驱动包mysql-connector-java,需要基于java操作MySQL即需要该驱动包。同样的,要基于java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。
二、Java的数据库编程:JDBC JDBC,即Java Database Connectivity,java数据库连接,是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。 这个API由java.sql. *, javax.sql. * 包中的一些类和接口组成,它为java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。
三、JDBC工作原理 JDBC为多种关系数据库提供了统一访问方式。作为特定厂商数据库访问API的一种高级抽象,它主要包含一些通用的接口类。
JDBC访问数据库层次结构:
文章图片
我们使用一套JDBC编码,在
切换数据库之后,Java操作数据库的代码可以不动(几乎),数据库驱动包要调整,sql因为有标准sql的部分,还有数据库相关的关键字,如mysql中的limit等,这些也需要调整。
JDBC优势:
Java语言访问数据库操作完全面向抽象接口编程
开发数据库应用不用限定在特定的数据库厂商的API
为Java操作不同的数据库提供一种统一的规范,程序在不同数据库的可移植性大大增强
四、JDBC开发步骤 1.创建一个普通的Java项目
2.下载mysql的驱动包
下载驱动包网址
文章图片
我用的是5.1.xx版本的,说明:不同版本的数据库驱动包,里边的类/接口可能不同
文章图片
3.项目中添加数据库驱动包(依赖)
文章图片
文章图片
验证:写Java代码,可以使用mysql驱动包中的类/接口,才表示引入的依赖没有问题。
文章图片
4.测试:连接数据库
注意:
1.一开始我们写入forName时会飘红,这里先不用管,直接抛出异常。
alt+enter出现以下的界面,点击第一个:
文章图片
2.获取数据库连接:Connection接口,需要使用jdbc中的,不要使用mysql中的
3.MySQL数据连接的URL参数格式如下:
jdbc:mysql://服务器地址:端口/数据库名?参数名=参数值
文章图片
//加载JDBC驱动程序:反射的方式,这样调用初始化com.mysql.jdbc.Driver类,
//即将该类加载到JVM方法区,并执行该类的静态方法块,静态属性
//数据库驱动包就可以在这种操作下,执行对应的初始化工作(驱动)
Class.forName("com.mysql.jdbc.Driver");
//获取数据库连接:Connection接口,需要使用jdbc中的,不要使用mysql中的
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/kang?" +
"user=root&password=111111&useUnicode=true&characterEncoding=UTF-8&useSSL=false");
五、JDBC操作步骤
1.获取数据库连接对象
Connection(jdbc中的接口)
2.使用数据库连接对象来创建一个操作命令对象Statement,该对象是进行sql操作的抽象出来的对象
//通过连接对象创建操作命令对象Statement(使用jdbc中的),该对象是用于操作sql的一个抽象的对象
Statement s=conn.createStatement();
3.调用操作命令对象的方法来执行sql
查询:executeQuery
更新操作(插入、修改、删除):executeUpdate,返回值int,表示执行成功了几条
//更新操作:调用executeUpdate方法,插入,修改,删除都是
int n=s.executeUpdate("update exam_result set math=60 where id=1");
System.out.println("修改成功的数量:"+n);
4.如果是查询操作,需要处理结果集对象
查询,返回ResultSet结果集对象,这个结果集对象类似于数据结构中List