首页 理论教育 JDBC常用API应用Java程序设计

JDBC常用API应用Java程序设计

时间:2023-11-01 理论教育 版权反馈
【摘要】:JDBC API是一个Java接口和类的集合,这些类和接口用于建立数据库的连接、将SQL数据发送到数据库、处理SQL语句的结果以及获取数据库的元数据。数据库厂家提供的驱动都实现了JDBC API中的接口,学习时注意多态的使用,接口变量指向的是一个实现该接口的子类对象。

JDBC常用API应用Java程序设计

JDBC API是一个Java接口和类的集合,这些类和接口用于建立数据库的连接、将SQL数据发送到数据库、处理SQL语句的结果以及获取数据库的元数据。数据库厂家提供的驱动都实现了JDBC API中的接口,学习时注意多态的使用,接口变量指向的是一个实现该接口的子类对象。使用Java开发数据库应用程序的主要类和接口说明如下:

1.java.sql.Driver接口

每个数据库厂家的驱动程序都应该提供一个实现Driver接口的类,在编写JDBC时必须将使用的数据库驱动程序(即数据库驱动JAR包)加载到项目的classpath中。

2.java.sql.Driver Manager

Driver Manager用于管理一组JDBC驱动程序的基本服务。在加载某一个Driver类时,应用程序应该创建一个实例并向Driver Manager注册该实例。应用程序通常可以通过使用Class类的for Name(String className)加载和注册一个驱动程序,例如Class.for Name("com.mysql.jdbc.Driver")。

Driver Manager提供getConnection方法用于建立到给定数据库URL的连接,返回一个表示连接的Connection对象。方法声明如下:

public static Connection getConnection(String url,String user,String password)throws SQLException。

其中:参数url表示jdbc:subprotocol:subname形式的数据库url;参数user表示数据库用户,连接是为该用户建立的;参数password表示该用户的密码。

3.java.sql.Connection接口

Connection接口代表Java程序和特定数据库的连接(会话)。只有获得该连接,才能在连接上下文中执行SQL语句并返回结果。

Connection接口中几个常用方法介绍如下:

(1)Statement createStatement()throws SQLException:创建一个Statement对象用于将SQL语句发送到数据库。Statement接口用于执行不含参数的静态SQL语句。考虑到安全和效率问题,实际开发中一般使用Statement接口扩展后的PreparedStatement接口,用于执行含有或不含有参数的预编译的SQL语句。

(2)PreparedStatement prepareStatement(String sql)throws SQLException:创建一个PreparedStatement对象来将参数化的SQL语句发送到数据库。参数sql为可能包含一个或多个问号(“?”)用作参数占位符的SQL语句。

(3)CallableStatement prepareCall(String sql)throws SQLException:创建一个实现CallableStatement接口的对象来调用数据库存储过程。其中,CallableStatement接口继承自PreparedStatement接口。

(4)void set AutoCommit(boolean autoCommit)throws SQLException:在此连接上设置事务是否自动提交。如果连接处于自动提交模式下,则它的每条SQL语句都作为一个单独的事务提交。否则,所有SQL语句将聚集到一个事务中,直到调用commit方法或rollback方法为止。默认情况下,新连接处于自动提交模式。

(5)void rollback()throws SQLException:在此连接上回滚事务。取消在当前事务中进行的所有更改,并释放此实现Connection接口的对象当前持有的所有数据库锁。此方法只应该在已禁用自动提交模式时使用。

(6)void commit()throws SQLException:在此连接上提交事务。使所有上一次提交/回滚后进行的更改成为持久更改,并释放此实现Connection接口的对象当前持有的所有数据库锁。此方法只应该在已禁用自动提交模式时使用。

(7)void close()throws SQLException:立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放。

4.java.sql.PreparedStatement接口

PreparedStatement对象表示一个预编译的SQL语句的对象,是用Connection接口中的prepareStatement方法创建的。prepareStatement接口提供了在prepareStatement对象中设置问号(“?”)参数占位符的set系列方法。prepareStatement接口常用方法说明如下:

(1)void setInt(int parameterIndex,int x)throws SQLException:将指定参数设置为给定int类型值。在将此值发送到数据库时,驱动程序将它转换成一个SQL INTEGER值。参数parameter Index是SQL语句中问号参数占位符的位置,第一个参数是1,第二个参数是2,…。

(2)void set Double(int parameter Index,double x)throws SQLException:将指定参数设置为给定Java double值。在将此值发送到数据库时,驱动程序将它转换成一个SQL DOUBLE值。

(3)void set Float(int parameter Index,float x)throws SQLException:将指定参数设置为给定Java REAL值。在将此值发送到数据库时,驱动程序将它转换成一个SQL FLOAT值。

(4)void setString(int parameter Index,String x)throws SQLException:将指定参数设置为给定Java String值。在将此值发送给数据库时,驱动程序将它转换成一个SQL VARCHAR或LONGVARCHAR值(取决于该参数相对于驱动程序在VARCHAR值上的限制的大小)。

(5)void set Date(int parameter Index,Date x)throws SQLException:使用运行应用程序的虚拟机的默认时区将指定参数设置为给定java.sql.Date值。在将此值发送到数据库时,驱动程序将它转换成一个SQL DATE值。

(6)void set Time(int parameter Index,Time x)throws SQLException:将指定参数设置为给定java.sql.Time值。在将此值发送到数据库时,驱动程序将它转换成一个SQL TIME值。

(7)void set Timestamp(int parameter Index,Timestamp x)throws SQLException:将指定参数设置为给定java.sql.Timestamp值。在将此值发送到数据库时,驱动程序将它转换成一个SQL TIMESTAMP值。

(8)void setObject(int parameterIndex,Object x)throws SQLException:使用给定对象设置指定参数的值。第二个参数必须是Object类型。所以,应该对内置类型使用java.lang的等效对象。

JDBC规范指定了一个从Java Object类型到SQL类型的标准映射关系。在发送到数据库之前,给定参数将被转换为相应SQL类型。

(9)ResultSet executeQuery()throws SQLException:在PreparedStatement对象中执行SQL查询,并返回该查询生成的实现ResultSet接口的对象(ResultSet结果集)。

(10)int execute Update()throws SQLException:在PreparedStatement对象中执行SQL语句,该语句必须是一个SQL数据操作语言DML(data manipulation language)语句,比如INSERT、UPDATE或DELETE语句,返回更新的行数;或者是无返回内容的SQL语句,比如数据库定义语言DDL(data definition language)语句,返回值为0。

(11)void close()throws SQLException:立即释放此Statement对象的数据库和JDBC资源,而不是等待该对象自动关闭时发生此操作。一般来说,使用完后立即释放资源是一个好习惯,这样可以避免对数据库资源的占用。(www.xing528.com)

5.java.sql.ResultSet接口

ResultSet接口表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前,调用next方法将光标移动到下一行;因为该方法在ResultSet对象没有下一行时返回false,所以可以在while循环中使用它来迭代结果集。

ResultSet接口提供用于从当前行通过列的索引编号或列的名称获取列值的方法(例如getString、get Date等)。一般情况下,使用列索引较为高效,列的索引从1开始编号。用列名称调用获取方法时,列名称不区分大小写,如果多个列具有同一名称,则返回第一个匹配列的值。

当生成ResultSet对象的Statement对象关闭、重新执行或用来从多个结果的序列获取下一个结果时,ResultSet对象将自动关闭。

ResultSet接口中常用的几个方法说明如下:

(1)boolean next()throws SQLException:将光标从当前位置向前移一行。ResultSet光标最初位于第一行之前;第一次调用next方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。如果新的当前行有效,则返回true;如果不存在下一行,则返回false。

(2)String getString(int columnIndex)throws SQLException:以Java编程语言中String的形式获取此ResultSet对象的当前行中指定列的值。参数columnIndex代表列的索引编号,第一列是1,第二列是2,…。

(3)String getString(String column Label)throws SQLException:以Java编程语言中String的形式获取此ResultSet对象的当前行中指定列的值。参数column Label代表列的名称。

(4)int getInt(int columnIndex)throws SQLException:以Java编程语言中int的形式获取此ResultSet对象的当前行中指定列的值。

(5)int getInt(String column Label)throws SQLException:以Java编程语言中int的形式获取此ResultSet对象的当前行中指定列的值。

(6)double get Double(int columnIndex)throws SQLException:以Java编程语言中double的形式获取此ResultSet对象的当前行中指定列的值。

(7)double getDouble(String column Label)throws SQLException:以Java编程语言中double的形式获取此ResultSet对象的当前行中指定列的值。

(8)Date get Date(int columnIndex)throws SQLException:以Java编程语言中java.sql.Date对象的形式获取此ResultSet对象的当前行中指定列的值。

(9)Date get Date(String column Label)throws SQLException:以Java编程语言中的java.sql.Date对象的形式获取此ResultSet对象的当前行中指定列的值。

(10)Time get Time(int columnIndex)throws SQLException:以Java编程语言中java.sql.Time对象的形式获取此ResultSet对象的当前行中指定列的值。

(11)Time get Time(String column Label)throws SQLException:以Java编程语言中java.sql.Time对象的形式获取此ResultSet对象的当前行中指定列的值。

(12)Timestamp get Timestamp(int columnIndex)throws SQLException:以Java编程语言中java.sql.Timestamp对象的形式获取此ResultSet对象的当前行中指定列的值。

(13)Timestamp get Timestamp(String column Label)throws SQLException:以Java编程语言中java.sql.Timestamp对象的形式获取此ResultSet对象的当前行中指定列的值。

(14)Object getObject(int columnIndex)throws SQLException:以Java编程语言中Object的形式获取此ResultSet对象的当前行中指定列的值。

此方法将以Java对象的形式返回给定列的值。Java对象的类型将为与该列的SQL类型相对应的默认Java对象类型,它遵守在JDBC规范中指定的内置类型的映射关系。

(15)Object get Object(String column Label)throws SQLException:以Java编程语言中Object的形式获取此ResultSet对象的当前行中指定列的值。

(16)ResultSet MetaData get MetaData()throws SQLException:获取此ResultSet对象中的ResultSet MetaData对象。

(17)void close()throws SQLException:立即释放此ResultSet对象的数据库和JDBC资源,而不是等待该对象自动关闭时发生此操作。

6.java.sql.ResultSet MetaData接口

ResultSet MetaData接口描述属于结果集的信息,ResultSet MetaData对象可用于获取关于ResultSet对象中列的类型和属性的信息。

(1)int getColumnCount()throws SQLException:返回此ResultSet对象中的列的数目。

(2)String getColumn Name(int column)throws SQLException:获取指定列的名称。参数column代表列的索引编号,第一列是1,第二列是2,…。

(3)String getColumn Label(int column)throws SQLException:获取用于打印输出和显示的指定列的建议标题。建议标题通常由SQL AS子句来指定。如果未指定SQL AS,则从getColumn Label返回的值将和从get Column Name返回的值相同。

(4)int getColumn Type(int column)throws SQLException:获取指定列的SQL类型(也称为JDBC类型)。返回值对应java.sql.Types的类型代码常量。

(5)String get Column TypeName(int column)throws SQLException:获取指定列的数据库特定的类型名称。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈