Java API简介

JDBC API

 1.JDBC界面定义

 JDBC API包含java.sgl的界面和类

java.sgl.CallableStatement:用于执行存储的SQL过程的界面。

java.sgl.Connection: 一个连接表示与某一指定数据库的一个会话。在该连接中可以执行SQL语句和处理返回结果。

java.sql.DataTruncation:当JDBC碰到意外数据截断时,报告一个警告(读数据时)或产生一个异常(写数据时)。

java.sql.Date:是标准java.util.date的一个子集,只表示天数,而不包含时、分、秒。

java.sql.Driver:定义一个在每一个数据库驱动程序中必须实现的驱动程序界面。 java.sql.DriverManager:提供对全局SQL状态的访问。

java.sql.DriverPropertyInto:提供高级程序员与驱动程序之间对连接特性信息进行交互的手段。 java.sql.NullData:当由getXXX或getObiect方法读出一个SQL空值时,产生一个NullData警告。 java.sql.Numeric:是一个任意精度标量数值类,可用作表示SQL定点Numerlc和Decimal类型的数值。 java.sql.PreparedStatement:保存一个预编译的SQL语句的对象,该对象可被高效地执行多次。 java.sql.ResultSet:结果集提供对执行一个SQL语句后产生的结果表的访问。表中数据按行依次取出。为便于移植,建议对每一行数据从左至右按列读出。

java.sql.SQLException:处理数据库访问时的出错信息。

java.sql.SQLWarning:处理数据库访问时的警告信息。

java.sql.Statement:用作执行一条静态的SQL语句并接收产生的结果。

java.sql.Time:用于表示标准java.util.date类的一个信息子集,仅表示时、分、秒。 java.sql.Timestamp:扩展标准java.util.date类,使其能够表示SQL的时间戳,增加了一个以纳秒为单位的时间域。

java.sql.Types:定义区分SQL类型的常量。类常量值与XOPEN中的值相同。

此外,JDBC API 还定义了JDBC元数据界面java.sql.DatabaseMetaData 和java.sql.ResultSetMetaData。

图5 界面之间的关系

界面间的关系由图5表示,其中箭头表示函数,而线表示其它方法。

 

2.数据库连接

(1)建立一个连接

用户在访问数据库时,需要在JDBC管理层由 java.sql.DriverManager.getConnection方法产生一个java.sql.Connection对象

该方法使用一个数据库URL串作为参数。

(2)选择合适的驱动程序

在数据库URL中,可以指定驱动程序的名称,也可以不指定。

如果不指定驱动程序,则从Java特性"sql.drivers"所指出的驱动程序表中依次搜寻,使用最先找到的可成功连接的驱动程序。

(3)数据库URL

在连接时,由数据库URL参数指定要连接的数据库,此时可称为JDBC URL,其格式为:

 

jdbc:<子协议>:<子名称>

 

如果是对网络数据库访问,那么建议用户使用标准URL作为子名称的一部分。

比如对数据资源名为fred访问的URL可能是: jdbc:odbc:fred 或jdbc:dbnet://wombat:356/fred

子协议odbc表示对ODBC数据资源的访问,其格式为: jdbc:odbc:<数据资源名>[;<属性名>=<属性值>]*

  ·连接参数:

java.util.Properties对象指出。

建议大多数参数不要在此处给出,而在协议中指出。

  ·支持多连接:

一个应用程序可以使用一个或多个驱动程序建立与多个数据库连接。

  ·驱动程序的注册:

有两种方法,

一是在JDBC java.sql.DriverManager类初始化时查找"sql.drivers"特性,对每一个驱动程序自动注册;

二是由标准 Class.forName方法显式加载一个驱动程序,参数为驱动程序名。

 

3.参数传递和结果接收

(1)查询结果 执行一条查询语句后,返回结果是可由java.sql.ResultSet对象访问的行的集合

在该对象中提供了一系列"get" 方法,访问当前的每一列,Result-Set.next方法可实现在结果集的行之间移动,可以使用列索引或列名指定相应的列。

·查询结果的数据转换

。 ResultSet.getXXX方法可以把SQL类型转化为需要的Java类型

。若指定一个非法的类型转换时,则产生一个SQLException的异常

·空值判断

。先读出某一列数据,然后使用Result-Set.wasNull方法,判断返回结果是否是SQL"NULL"

·长数据的读出

。JDBC支持由getByte和getString 方法读出任意长的LONGVARBINARY或LONGVAR-CHAR类型数据,也支持由方法GetBinaryStream、GetAsciiStream 和 GetUnicodeStream返回数据流来读出数据

·支持用getResultSet、GetUpdateCount 和 Get-MoreResults方法分别返回一条结果、返回被修改的行数和返回多条结果。

 

(2)传递IN参数

java.sql.PreparedStatement界面提供了一系列setXXX方法向SQL语句传递参数,实现动态的SQL语句。

在传递参数时必须满足数据类型一致的要求。

因此必须预先调用类型转换方法完成数据转换,同时也提供了传递SQL空值和长数据给IN参数的方法。

 

(3)接收OUT参数

在调用一个存储过程时,可用setXXX方法传递IN参数,使用OUT参数接收返回结果。

在使用时必须先调用CallableStatement.registerOutParameter方法为每一个OUT参数进行类型注册,然后执行该过程调用语句,最后使用getXXX方法取出OUT参数的结果。

返回结果的数据类型是与用户注册的SQL类型相对应的Java类型。

空值的处理步骤是,先读出参数值,再用CallableStatement.wasNull方法判断是否为空值。
不支持以流形式读出OUT参数的机制。

接收时返回结果的顺序优先于OUT参数。

 

(4)数据截断

在某种条件下,有可能在读或写数据时出现数据截断,如当由Connection.setMaxFieldSize设置了一个域的最大长度时,超过设置长度后的数据就被截断。

在读数据时,如出现数据截断,则产生一条DataTruncation的 SQLWarning警告。

在写数据时,如发生数据截断,则产生一个DataTruncation的SQLException异常。

 

4. SQL数据类型到Java类型的转换

由于SQL数据类型与Java数据类型之间差异较大,可相互转换的类型之间还是存在一些不一致的地方,因此JDBC提供了详细的从SQL类型到Java类型的标准转换表从Java类型到SQL类型的标准转换表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值