首页 > 编程 > Java > 正文

【Java EE】JDBC数据库编程基础

2019-11-08 01:52:51
字体:
来源:转载
供稿:网友

JDBC概述

JDBC概述

JDBC(java Database Connectivity):Java数据库连接,它是一种由一组用Java语言编写的类和接口组成的用于数据库访问的应用程序API使用JDBC可以实现通过同一的语法对多种关系数据库进行访问,而不用担心不同数据库之间操作语言的差异

JDBC体系结构

JDBC Driver Interface:驱动程序管理器接口JDBC API

JDBC优缺点

优点:JDBC使得编程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地方JDBC支持不同的关系数据库,这使得程序的可移植性大大加强JDBC API是面向对象的,可以让用户把常用的方法封装为一个类,以备后用缺点:使用JDBC访问数据记录的速度会受到一定程度的影响JDBC结构中包含不同厂家的产品,这就给更改数据源带来了很大的麻烦

JDBC核心接口与类

JDBC核心类库包含在java.sql包中类:DriverManager:负责管理JDBC驱动程序,使用JDBC驱动程序之前,必须先将驱动程序加载并注册后才可以使用,同时提供方法来建立与数据库的连接SQLException:与数据库操作相关的异常接口:Connection:特定数据库的连接(会话),在连接上下文中执行SQL语句并返回结果PReparedStatement:表示预编译的SQL语句的对象Statement:用于执行静态SQL语句并返回它所产生结果的对象ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成CallableStatement:用于执行SQL存储过程的接口

创建JDBC应用

创建JDBC应用程序的步骤

找到驱动程序文件:各数据库厂商均提供对JDBC的支持,即提供数据库连接使用的驱动程序文件Oracle数据库的驱动程序文件路径:
<Oracle安装路径>/product/<版本号>/db_1/jdbc/lib/<任一jar包>载入JDBC驱动程序:将驱动程序文件粘贴到IDE里需要使用JDBC的工程根目录下,然后右键jar包,选择Build Path下的Add to Build Path,将jar包解压到工程项目中编写载入驱动的Java代码Class类中提供加载驱动程序的方法:
public static Class forName(String className) throws ClassNotFoundException{...} // className:表示类的描述符的字符串Oracle驱动的类描述符为:
oracle.jdbc.driver.OracleDriver定义连接URL:Oracle数据库的url格式为:
jdbc:oracle:thin:@<主机名或ip>:<端口号>:<数据库名>/** * 示例: * jdbc:oracle:thin:@localhost:1521:orcl */建立连接:DriverManager类提供getConnection方法可获得指定数据库的连接对象
返回值类型方法说明
static ConnectiongetConnection(String url)试图建立到给定数据库 URL 的连接
static ConnectiongetConnection(String url,Properties info)试图建立到给定数据库 URL 的连接
static ConnectiongetConnection(String url,String userName,String passWord)试图建立到给定数据库 URL 的连接
// 示例Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");获得Statement对象Connection接口中提供可获得Statement对象的方法:
返回值类型方法说明
StatementcreateStatement()创建一个Statement对象来将 SQL 语句发送到数据库
执行SQL语句Statement接口提供可执行 SQL 命令的方法:
返回值类型方法说明
booleanexcute(String sql)执行给定的SQL语句,该语句可能返回多个结果
ResultSetexcuteQuery(String sql)执行给定的SQL语句,该语句返回单个ResultSet对象
intexecuteUpdate(Stringsql) 执行给定的SQL语句,该语句可能为DML语句或者DDL 语句
操作结果集对象ResultSet接口提供可对结果集进行操作的方法(ResultSet接口提供的getXXX方法请自行查看API)
返回值类型方法说明
booleannext()将光标从当前位置向前移一行
XXXgetXXX(String columnLabel)以Java编程语言中XXX的形式获取此ResultSet对象的当前行中指定列的值
XXXgetXXX(int columnIndex)以Java编程语言中XXX的形式获取此ResultSet对象的当前行中指定序号列的值
关闭操作对象及连接可调用接口ResultSet、Statement、Connection中的关闭方法,立即释放数据库和JDBC相关资源
返回值类型方法说明
voidclose()立即释放此对象的数据库和JDBC资源,而不是等待它们被自动释放

数据库驱动程序分类

JDBC-ODBC桥:把JDBC API调用转换成ODBC API调用,然后ODBC API调用针对供应商的ODBC驱动程序来访问数据库,即利用JDBC-ODBC桥通过ODBC来存储数据源本地API驱动:直接把JDBC调用转变为数据库的标准调用再去访问数据库,这种方法需要本地数据库驱动代码通讯网络协议驱动:使用一种与具体数据库无关的协议将数据库请求发送给一个中间服务器本地协议驱动:直接把JDBC调用转换为符合相关数据库系统规范的请求,通常开发中多采用这种驱动执行效率高:本地协议驱动不需要吧JDBC调用传给ODBC、本地数据库接口或中间层服务器平台独立性:本地协议驱动完全由Java实现,写的应用也可以直接和数据库服务器通讯数据库驱动程序

SQL数据类型与Java数据类型对照表

SQL数据类型Java数据类型
CHARString
VARCHARString
LONGVARCHARString
NUMERICjava.math.BigDecimal
DECIMALjava.math.BigDecimal
BITboolean
TINYINTbyte
SMALLINTshort
INTEGERint
BIGINTlong
REALfloat
FLOATdouble
DOUBLEdouble
BINARYbyte[]
VARBINARYbyte[]
LONGVARBINARYbyte[]
DATEjava.sql.date
TIMEjava.sql.Time
TIMESTAMPjava.sql.Timestamp

JDBC日期时间处理

对于数据库种不同的时间类型,要分别采用与之相对应的Java包装类来存取:日期类型用java.sql.Date,getDate()只能取出年月日时间类型用java.sql.Time,getTime()只能取出时分秒日期/时间类型用java.sql.Timestamp,getTimestamp()可以把年月日时分秒都取出来JDBC的日期/时间类型转换为字符串
Timestamp timeStamp = result.timestamp;// 通过数据库访问获取到数据result.timestampSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str = sdf.format(timeStamp);java.sql.Timestamp与java.util.Date之间的相互转换java.sql.Timestamp是java.util.Date的子类,不需要做任何转换直接赋值即可java.util.Date转换为java.sql.Timestamp:
java.sql.Timestamp ts; java.util.Date utilDate; ts.setTime(utilDate.getTime());

PreparedStatement接口

PreparedStatement接口

PreparedStatement接口是Statement接口的子接口,允许使用不同的参数多次执行同样的SQL语句Connection接口提供创建PreparedStatement对象的方法,可指定SQL语句
返回值类型方法名说明
PreparedStatementpreparedStatement(String sql)创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库
PreparedStatement接口的setXXX方法用来将指定参数设置为给定的数据,具体内容请自行查看API

PreparedStatement接口的优点

可动态设置参数增加了预编译功能提高执行速度
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表