当前课程知识点:数据库概论 > 第九章 数据库应用与开发 > 9.2 Java访问数据库 > Java访问数据库
大家好
我是来自云南大学软件学院的包崇明
今天为大家作
Java访问SQL Server数据库的演示
本章以java语言访问
SQL Server数据库为例
介绍运用程序访问数据库系统的基本操作
Java通过JDBC
也就是Java数据库连接来访问数据库
JDBC是一种规范
它制定了数据库厂商
为Java程序员访问数据库
需要实现的类和接口标准
基于这个标准
Java数据库应用程序开发
可以独立于所采用的数据库系统
使得程序员只须写一遍程序
就可让它在
任何数据库管理系统平台上运行
目前主流的数据库系统
都提供了
遵循JDBC规范的JDBC驱动程序
Java应用程序可以通过
JDBC驱动来直接访问数据库服务器
如果一个数据库系统
没有提供相应的JDBC驱动
一般可通过
JDBC桥接ODBC的方式
来访问数据库
ODBC是微软公司主导的
开放数据库连接协议
采用JDBC来开发
Java数据库运用的主要步骤为
一
到相应的数据库网站下载JDBC驱动包
一般常见的数据库系统
都提供JDBC驱动程序类
以SQL Server作为示例
可到SQL Server网站
下载相应的JDBC驱动库
一般来说
针对不同的Java运行环境
SQL Server会提供不同的驱动文件包
注意根据JRE的版本号
下载对应的JDBC驱动包
二
在开发环境中建立一个java项目
并将JDBC驱动类库
放入可访问类路径下
如采用的是Eclipse开发
则在项目build path
下的libraries中进行配置
三
一般来说
通过JDBC访问数据库
都需要首先获得一个
数据库连接connection
然后通过这个连接
获得一个statement接口引用
在statement对象上面执行SQL语句
结果存储于ResultSet对象中
通过ResultSet对象提供的方法
可定位并访问表的行数据
在示例中
我们演示了
获得数据库连接的两种常见方法
通过驱动管理器DriverManager获得
和通过数据源对象获得
我们通过八个小例子
来演示编写并执行
没有带参数的select
insert
update
delete语句的方法
带参数的select和insert语句
调用带输入输出参数的存储过程
以及返回结果集的存储过程的方法
下面请同学们和我一起
来通过示例学习java访问数据库的方法
首先我采用
Eclipse作为开发环境
已经安装了合适的JDBC驱动包
并设置到可访问的类路径下
在Eclipse中
是在build path下的
libraries中进行配置
首先我们需要获得一个数据库连接
一般可通过两种方法获得
通过驱动管理器获得
或者通过数据源对象获得
程序演示了这两种连接的获得方法
通过驱动管理器获得连接
首先需要通过
Class的forName类方法
来注册数据库驱动程序
需要提供给forName方法一个字符串
形式的驱动器名称
SQL Server的JDBC驱动名称是
com.microsoft.sqlserver.jdbc.SQLServerDriver
不同的数据库系统驱动名不一样
可通过用户手册查询
注册后通过调用
DriverManager的类方法
getConnection获得连接
getConnection方法
接收一个包含数据库服务器的
IP地址或者域名
监听的端口
准备访问的数据库名
数据库用户名及口令
等信息的连接URL字符串作为参数
返回一个和指定数据库建立的连接对象
我们访问的本机安装的SQL Server
监听端口是1433
访问的数据库是cap
第二种方法是通过数据源对象获得
方法是
先生成一个SQLServer数据源对象
为该对象设置数据库服务器的地址
监听端口
所需要访问的数据库
用户名和口令等信息
最后通过调用数据源对象的
getConnection方法
获得相应连接
这种方法更加简洁
推荐采用这种方法获得
SQL Server数据库连接
我们通过switch语句
来演示这两种连接获得方法
变量connGetMethod为1的时候
使用驱动管理器获得
变量值为2的时候
使用数据源对象获得
获得一个连接后
我们就可以通过该连接
让数据库服务器
执行我们提交的SQL语句
不同类型的SQL语句执行方式不一样
如果执行的SQL语句不带参数
则通过Statement接口引用执行
如果SQL语句带参数
则通过
PreparedStatement接口引用
来执行
一个参数用一个问号来表示
执行前需要给参数赋值
如果我们调用的是存储过程
则需要用
CallableStatement接口
引用来执行
对应每种statement引用
一般都有两种执行方法
executeQuery和executeUpdate
如果对于访问结果集的select语句
使用executeQuery方法
对于insert update delete等更新语句
采用executeUpdate方法
我们在cap数据库的顾客信息表上
编写了八个示例来演示
不同类型SQL语句的使用方法
一
无参数select例子
二
无参数insert例子
三
无参数update例子
四无参数delete例子
五带参数select例子
六带参数insert例子
七带输入输出参数的存储过程调用例子
八返回结果集合的存储过程调用例子
我们设置变量
caseOrder的值
结合switch语句来演示不同的例子
示例1是无参数select例子
执行一条SQL语句
SELECT * FROM customers
对于无参数的SQL语句
需要调用连接的
createStatement方法
获得一个statement接口引用
对于select语句
调用statement接口的
executeQuery方法来执行
返回结果集
存放在一个resultset对象中
我们设计了一个方法
displayInfo
来显示结果集的内容
在displayInfo方法中
我们利用resultset对象的next方法
让其指向下一结果行来遍历结果数据
如果next方法返回空值
表示数据行已经循环遍历完毕
根据列的类型
调用getString
getDouble等方法
获得当前行的列数据
比如cid列是字符串类型的
我们调用getString来获得cid值
discnt是浮点型的
我们调用getDouble方法来获得
现在我们执行示例1
当前顾客信息表中的内容
显示在下端控制台窗口中
通过SQL Server管理平台
可看到两者的结果一致
现在我们看示例2
执行一个无参数insert语句
insert into customers
values c009张三 昆明 10
我们的目的是在顾客信息表中
插入一个cid为c009的顾客
依然是获得一个statement接口引用
调用statement接口上的
executeUpdate方法来执行该语句
下面我们看一下执行结果
可看到顾客信息表中已经添加了该用户
接下来是示例3
执行一个无参数update语句
update customers
set city等于北京
where cid等于c009
我们通过该语句来修改
刚插入的c009顾客的居住信息
将其居住城市修改为北京
调用statement接口的
executeUpdate方法来执行该语句
下面我们看一下执行结果
可看到顾客信息表中
已经更新了该用户的居住城市
示例4是执行一条无参数delete语句
delete from customers
where cid等于c009
将刚才插入的c009顾客
从顾客信息表中删除
调用statement接口的
executeUpdate方法来执行该语句
下面我们看一下执行结果
可看到c009顾客
已经从顾客信息表中删除了
示例5演示一个带参数select语句
select * from customers
where cid等于问号
参数在SQL语句中用问号来表示
这类语句通过在执行语句前
给参数动态赋值来提供灵活的查询手段
这类带参数的语句
需要PreparedStatement接口的
executeQuery方法来执行
这条语句中有一个字符串类型的参数
通过setString方法来对该参数赋值
语句的执行结果是查找
cid为c002的用户信息
控制台显示了我们获得了该用户的信息
示例6演示了一个带参数insert语句
插入用户的信息都用参数表示
需要用PreparedStatement接口的
executeUpdate方法来执行该语句
执行前
根据参数的不同的类型来对参数进行赋值
cid是字符串类型的
调用setString方法赋值
discnt是浮点型的
调用setDouble方法进行赋值
现在我们执行这个示例
在控制台中可看到
该用户已经插入到用户信息表中了
示例7演示
带输入输出参数的存储过程
getUserNameByID
该存储过程接收一个cid作为输入参数
返回cid对应的用户名称作为输出参数
执行存储过程需要用到
CallableStatement接口的
execute方法
执行前需要设置了输入输出参数
现在我们执行这个示例
在控制台中可看到
已经打印出c002的用户姓名
最后演示
执行一个返回结果集合的存储过程
getUser
它返回所有顾客的信息
执行存储过程需要用
CallableStatement接口的
execute方法
通过getResultSet方法
来获得存储过程返回的结果集
现在我们执行这个示例
在控制台中可看到
列出了顾客信息表的所有信息
Java访问数据库的内容演示
到此结束
再见
-数据库概述
--Video
-导论--数据库概述
-1.1 数据库基础
--Video
-第一章 数据库基础--1.1 数据库基础
-2.1 CAP数据库
--CAP数据库
-第二章 关系运算--2.1 CAP数据库
-2.2 自然关系运算1
-- 自然关系运算1
-第二章 关系运算--2.2 自然关系运算1
-2.3 自然关系运算2
--自然关系运算2
-第二章 关系运算--2.3 自然关系运算2
-3.1 SQL概述
-- SQL概述
-3.1 SQL概述--作业
-3.2 数据定义DDL
--数据定义DDL
-3.2 数据定义DDL--作业
-3.3 SQL数据更新DML
-3.3 SQL数据更新DML--作业
-3.4 复杂SQL查询操作1
-第三章 结构化查询语言SQL--3.4 复杂SQL查询操作1
-3.5 复杂SQL查询操作2
-第三章 结构化查询语言SQL--3.5 复杂SQL查询操作2
-4.1 数据完整性
-4.1 数据完整性--作业
-4.2 完整性约束
--完整性约束
-4.2 完整性约束--作业
-4.3 外键约束
--外键约束
-4.3 外键约束--作业
-4.4 触发器
--触发器
-4.4 触发器--作业
-4.5 视图
--视图
-4.5 视图--作业
-4.6 安全性
--安全性
-4.6 安全性--作业
-5.1 索引
--Video
-5.2 B+树索引
--Video
-6.1 函数依赖
--Video
-6.2 Armstrong公理
--Video
-6.3 无损分解
--Video
-6.4 范式举例
--Video
-6.5 三种范式
--Video
-6.5 三种范式--作业
-7.1-E-R模型概述
--E-R模型概述
-7.2 E-R模型详解
--Video
-7.3 E-R模型的拓展
--Video
-7.4 E-R模型实例分析
--Video
-8.1 事务的ACID性质介绍
--ACID介绍
-8.1 事务的ACID性质介绍--作业
-8.2 事务经历
--事务经历
-8.2 事务经历--作业
-8.3 可串行化调度和前趋图
-8.3 可串行化调度和前趋图--作业
-8.4 两阶段封锁
--两段锁协议
-8.4 两阶段封锁--作业
-8.5 隔离级别
--隔离级别
-8.5 隔离级别--作业
-8.6 事务恢复
--事务恢复
-8.6 事务恢复--作业
-9.1 数据库使用介绍
--数据库使用介绍
-9.2 Java访问数据库
-9.2 Java访问数据库--作业
-10.1 数据库新技术概述
--Video