一文帮你搞定 Java 数据库基础 JDBC,网友:太实用了,已学完
今日分享开始啦,请大家多多指教~
一、JDBC 概述
(1)JDBC API
是一组由 Java 语言编写的类和接口,包含在 java.sql 和 javax.sql 两个包中。
java.sql 为核心包,这个包包含于 J2SE 中,javax.sql 包扩展了 JDBC API 的功能,成为了 J2EE 的一个基本组成部分。
可分为两个层次:
面向底层的 JDBC Driver API,主要是针对数据库厂商开发数据库底层驱动程序使用
面向程序员的 JDBC API
(2)JDBC API 的体系结构
(3)JDBC API 的任务
面向程序员的 JDBC API 可以完成以下主要任务
首先建立和数据源的连接
然后向其传送查询和修改等 SQL 命令
最后处理数据源返回的 SQL 执行的结果
(4)JDBC API 中的重要接口和类
(5)JDBC 程序开发步骤
设置环境,引入相应的 JDBC 类
选择合适的 JDBC 驱动程序并加载
分配一个 Connection 对象
分配一个 Statement 对象
用该 Statement 对象进行查询等操作
从返回的 ResultSet 对象中获取相应的数据
关闭 Connection
二、设置环境
安装 Java 和 JDBC API(安装 JDK 的同时就自动安装了)
安装数据库驱动程序(安装 JDK 的同时就自动安装了安装 JDBC-ODBC 桥驱动程序)
安装 DBMS
建立一个数据库,并注册数据源
三、建立连接
接下来要建立和 DBMS 的连接。包括两个步骤:
装载驱动器,用 Class.forName 方法显式装载驱动程序,建立与数据库的连接,调用 DriverManager.getConnection()方法。
装载驱动器
用 Class.forName 方法显式装载驱动程序,如:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
以完整的 Java 类名字符串为参数,装载此类,并返回一个 Class 对象描述此类。
执行上述代码时将自动创建一个驱动器类的实例,并自动调用驱动器管理器 DriverManager 类中的 RegisterDriver 方法来注册它。
这里“sun.jdbc.odbc.JdbcOdbcDriver”是驱动器类的名字,可以从驱动程序的说明文档中得到。
需要注意的是,如果驱动器类有可能不存在,使用此方法就可能会抛出 ClassNotFoundException 异常,因此需要捕获这个异常:
建立连接
建立与数据库的连接,调用 DriverManager.getConnection()方法。例如,要连接 Access 数据库 PIMS,语句如下:
Connection con = DriverManager.getConnection("jdbc:odbc:PIMS", "test","1234");
将返回与指定数据库建立的连接
该方法有三个字符串参数:
1.第一个是 JDBC URL,格式为 jdbc:子协议:子名称
Jdbc 表示协议,JDBC URL 中的协议总是 jdbc;
子协议是驱动器名称;
子名称是数据库的名称,如果是位于远程服务器上的数据库,则还应该包括网络地址,//主机名:端口/数据库名。
2.第二个是访问数据库所需的用户名;
3.第三个是用户密码;
Connection 是一个接口,表示与指定数据库的连接。
DriverManager 类位于 JDBC 的管理层,作用于用户和驱动程序之间。它负责跟踪在一个系统中所有可用的 JDBC 驱动程序,并在数据库和相应驱动程序之间建立连接。
四、对数据库进行操作
建立好到数据库的连接后,就可以进行对数据库的操作了,一般包括如下三个步骤:
使用 Connection 对象创建 Statement 对象
使用 Statement 对象执行 SQL 命令
从上一步骤返回的 ResultSet 对象中提取执行结果
(1)创建 Statement 对象
Connection 接口有 3 个方法可用来创建向数据库发送 SQL 语句的对象:
createStatement:
创建向数据库发送 SQL 语句的 Statement 对象,用于简单的 SQL 语句。
Statement stmt = con.createStatement();
prepareStatement:
创建向数据库发送 SQL 语句的 PreparedStatement 对象,用于带有一个或多个参数的 SQL 语句。在 SQL 语句执行前,这些参数将被赋值
prepareCall:
创建向数据库发送 SQL 语句的 CallableStatement 对象,用于调用数据库中的存储过程
(2)使用 Statement 对象执行语句
Statement 接口提供了三种执行 SQL 语句的方法,使用哪一个方法由 SQL 语句所产生的内容决定:
executeQuery
用于产生单个结果集的语句,例如 SELECT 语句。
ResultSet rs = stmt.executeQuery("Select * From Person");
executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句,以及 CREATE TABLE。
stmt.executeUpdate("DELETE FROM Person WHERE Name='李四'");
返回值是一个整数,表示受影响的行数(即更新计数),比如修改了多少行、删除了多少行等。对于 CREATE TABLE 等语句,因不涉及到行的操作,所以 executeUpdate 的返回值总为零。
Execute
用于执行返回多个结果集(ResultSet 对象)、多个更新计数或二者组合的语句。例如执行某个已存储过程或动态执行 SQL,这时有可能出现多个结果的情况。
(3)提取执行结果
查询结果作为结果集(ResultSet)对象返回后,我们可以从 ResultSet 对象中提取结果
使用 next 方法
ResultSet 对象中含有检索出来的行,其中有一个指示器,指向当前可操作的行,初始状态下指示器是指向第一行之前。
方法 next 的功能是将指示器下移一行,所以第一次调用 next 方法时便将指示器指向第一行,以后每一次对 next 的成功调用都会将指示器移向下一行。
使用 getXXX 方法
使用相应类型的 getXXX 方法可以从当前行指定列中提取不同类型的数据。例如,提取 VARCHAR 类型数据时就要用 getString 方法,而提取 FLOAT 类型数据的方法是 getFloat。
允许使用列名或列序号作为 getXXX 方法的参数
String s = rs.getString("Name");
提取当前行 Name 列中的数据,并把其从 SQL 的 VARCHAR 类型转换成 Java 的 String 类型,然后赋值给对象 s。
String s = rs.getString(2);//提取当前行的第 2 列数据
这里的列序号指的是结果集中的列序号,而不是原表中的列序号。
五、应用举例
通过 JDBC 访问 PIMS 数据库,进行查询、添加操作 :
执行结果为
1 张三
2 李四
3 王五
4 韩六
添加数据后的信息为:
1 张三
2 李四
3 王五
4 韩六
9 林时
删除数据后的信息为:
1 张三
2 李四
3 王五
4 韩六
今日份分享已结束,请大家多多包涵和指点!
评论