博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jdbc详解(一)
阅读量:7004 次
发布时间:2019-06-27

本文共 4280 字,大约阅读时间需要 14 分钟。

JDBC简介

l
数据库驱动

SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC

l
JDBC
全称为:
Java Data Base Connectivity
java
数据库连接),它主要由接口组成。
l
组成
JDBC
的2个包:
l
java.sql
l
javax.sql
l
开发
JDBC
应用需要以上
2
个包的支持外,还需要导入相应
JDBC
的数据库实现
(
即数据库驱动
)

第一个JDBC程序

l
编写一个程序,这个程序从
user
表中读取数据,并打印在命令行窗口中。

  一、搭建实验环境 :

  1、在mysql中创建一个库,并创建user表和插入表的数据。

  2、新建一个Java工程,并导入数据驱动。

二、编写程序,在程序中加载数据库驱动

  DriverManager.registerDriver(Driver driver)

三、建立连接(Connection)

  Connection conn = DriverManager.getConnection(url,user,pass);

四、创建用于向数据库发送SQLStatement对象,并发送sql

  Statement st =conn.createStatement();

  ResultSetrs =st.excuteQuery(sql);

五、从代表结果集的ResultSet中取出数据,打印到命令行窗口

六、断开与数据库的连接,并释放相关资源

程序详解DriverManager

l
Jdbc
程序中的
DriverManager
用于加载驱动,并创建与数据库的链接,这个
API
的常用方法:
DriverManager.registerDriver
(new Driver())
DriverManager.getConnection
(
url
, user, password)
l
注意:在实际开发中并不推荐采用
registerDriver
方法注册驱动。原因有二:

一、查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。

二、程序依赖mysqlapi,脱离mysqljar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。

推荐方式:
Class.forName
(“
com.mysql.jdbc.Driver
”);
采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高。
l
同样,在开发中也不建议采用具体的驱动类型指向
getConnection
方法返回的
connection
对象。
其实还有另一种注册驱动的方式:System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver");若要注册多个驱动,在第二个参数后直接加驱动名字,用":"隔开
如:System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver:oracle.jdbc.driver.OracleDriver");

数据库URL

l
URL
用于标识数据库的位置,程序员通过
URL
地址告诉
JDBC
程序连接哪个数据库,
URL
的写法为:

  

l
常用数据库
URL
地址的写法:
Oracle
写法:
jdbc:oracle:thin
:@localhost:1521:sid
SqlServer
jdbc:microsoft:sqlserver
://localhost:1433;
DatabaseName
=
sid
MySql
jdbc:mysql
://localhost:3306/
sid
l
Mysql
url
地址的简写形式:
jdbc:mysql
:///
sid
l
常用属性:
useUnicode
=
true&characterEncoding
=UTF-8
程序详解
—Connection
l
Jdbc
程序中的
Connection
,它用于代表数据库的链接,
Collection
是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过
connection
对象完成的,这个对象的常用方法:
createStatement
()
:创建向数据库发送
sql
statement
对象。
prepareStatement
(
sql
)
:创建向数据库发送预编译
sql
PrepareSatement
对象。
prepareCall
(
sql
)
:创建执行存储过程的
callableStatement
对象。
setAutoCommit
(
boolean
 
autoCommit
)
:设置事务是否自动提交。
commit()
:在链接上提交事务。
rollback()
:在此链接上回滚事务。
程序详解
—Statement
l
Jdbc
程序中的
Statement
对象用于向数据库发送
SQL
语句,
Statement
对象常用方法:
executeQuery
(String 
sql
)
:用于向数据发送查询语句。
executeUpdate
(String 
sql
)
:用于向数据库发送
insert
update
delete
语句
execute(String
sql
)
:用于向数据库发送任意
sql
语句
addBatch
(String 
sql
)
:把多条
sql
语句放到一个批处理中。
executeBatch
()
:向数据库发送一批
sql
语句执行。
程序详解
ResultSet
l
Jdbc
程序中的
ResultSet
用于代表
Sql
语句的执行结果。
Resultset
封装执行结果时,采用的类似于表格的方式。
ResultSet
对象维护了一个指向表格数据行的
游标,
初始的时候,游标在第一行之前,调用
ResultSet.next
()
方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。
l
ResultSet
既然用于封装执行结果的,所以该对象提供的都是用于获取数据的
get
方法:
获取任意类型的数据
getObject
(
int
index)
getObject
(string
columnName
)
获取指定类型的数据,例如:
getString
(
int
index)
getString
(String
columnName
)
提问:数据库中列的类型是
varchar
,获取该列的数据调用什么方法?
Int
类型呢?
bigInt
类型呢?
Boolean
类型?
常用数据类型转换表
程序详解
ResultSet
l
ResultSet
还提供了对结果集进行滚动的方法:
next()
:移动到下一行
Previous()
:移动到前一行
absolute(
int
row)
:移动到指定行
beforeFirst
()
:移动
resultSet
的最前面。
afterLast
()
:移动到
resultSet
的最后面。
程序详解
释放资源
l
Jdbc
程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是
ResultSet
,Statement
Connection
对象。
l
特别是
Connection
对象,它是非常稀有的资源,用完后必须马上释放,如果
Connection
不能及时、正确的关闭,极易导致系统宕机。
Connection
的使用原则是尽量晚创建,尽量早的释放。
l
l
为确保资源释放代码能运行,资源释放代码也一定要放在
finally
语句中。
使用
JDBC
对数据库进行
CRUD
l
Jdbc
中的
statement
对象用于向数据库发送
SQL
语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
l
l
Statement
对象的
executeUpdate
方法,用于向数据库发送增、删、改的
sql
语句,
executeUpdate
执行完后,将会返回一个整数
(
即增删改语句导致了数据库几行数据发生了变化
)
l
l
Statement.executeQuery
方法用于向数据库发送查询语句,
executeQuery
方法返回代表查询结果的
ResultSet
对象。
 
PreparedStatement
l
PreperedStatement
Statement
的孩子,它的实例对象可以通过调用
Connection.preparedStatement
()
方法获得,相对于
Statement
对象而言:
PreperedStatement
可以避免
SQL
注入的问题。
Statement
会使数据库频繁编译
SQL
,可能造成数据库缓冲区溢出。
PreparedStatement
可对
SQL
进行预编译,从而提高数据库的执行效率。
并且
PreperedStatement
对于
sql
中的参数,允许使用占位符的形式进行替换,简化
sql
语句的编写。
数据库分页
l
MySQL
分页的实现:
Select * from table limit M,N
M
:记录开始索引位置
N
:取多少条记录。
l
完成
WEB
页面的分页显示
先获得需分页显示的记录总数,然后在
web
页面中显示页码。
根据页码,从数据库中查询相应的记录显示在
web
页面中。
以上两项操作通常使用
Page
对象进行封装
l
Oracle
分页语句:

select* from (

  select rownum r_,row_.* from (

  select * from studentorderby id

  ) row_ where rownum<=5

         ) where r_>=1

1位置:起始索引位置。

5位置:结束索引位置。

//本文及后续两篇源自传智播客

你可能感兴趣的文章
Android View体系(四)从源码解析Scroller
查看>>
Cannot lock storage /tmp/hadoop-root/dfs/name. The directory is already locked.
查看>>
BFS和DFS的java实现
查看>>
Struts2框架起源
查看>>
Chromosome coordinate systems: 0-based, 1-based
查看>>
Myeclipse10集成Flex4.6
查看>>
java电影站点开发经验3
查看>>
notepad++自动对齐使用空格代替Tab并将空格显示为小点
查看>>
开源APM系统skywalking介绍与使用
查看>>
rabbitmqctl 报错
查看>>
elasticsearch 安装ik中文分词
查看>>
解决OS睡眠功能中,移动鼠标就会唤醒
查看>>
深入理解VMware虚拟机网络通信原理
查看>>
SpringMVC中使用Interceptor拦截器
查看>>
摩斯密码加解密
查看>>
徒弟涨工资排行榜
查看>>
关于庖丁分词
查看>>
JavaScript 数组去重并统计重复元素出现的次数
查看>>
ZJOI2002昂贵的聘礼题解
查看>>
Java并发:多线程和java.util.concurrent并发包总结
查看>>