写点什么

一文帮你搞定 Java 数据库基础 JDBC,网友:太实用了,已学完

发布于: 1 小时前
一文帮你搞定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 韩六

今日份分享已结束,请大家多多包涵和指点!


用户头像

还未添加个人签名 2021.04.20 加入

Java工具与相关资料获取等WX: pfx950924(备注来源)

评论

发布
暂无评论
一文帮你搞定Java数据库基础JDBC,网友:太实用了,已学完