JDBC 记录

Posted on 2011-11-10 13:31 cuicn 阅读(214) 评论(1)  编辑  收藏
Sun 制定了两套接口。应用程序开发者使用JDBC API,而数据库提供商和工具开发商使用JDBC驱动API。
JDBC和ODBC基于同一个思想:根据API编写的程序都可以与驱动管理器进行通信,而驱动管理器则通过插入其中的驱动程序与实际数据库进行通信。
JDBC驱动程序分类:
1、驱动程序将JDBC翻译成ODBC,然后使用一个ODBC驱动程序与数据库进行通信。JDK中包含了一个程序:JDBC/ODBC桥。不建议使用。
2、由部分Java程序和部分本地代码组成,用于与数据库的客户端API进行通信。在使用这种驱动之前,不仅要安装Java类库,还需要安装一些与平台相关的代码。
3、纯Java类库,使用一种与具体数据库无关的协议将数据库请求发送给服务器构件,然后该构件再将数据库请求翻译成特定数据库协议。
4、纯Java类库,将JDBC请求直接翻译成特定的数据库协议。
JDBC最终实现了一下目标:
1、通过使用SQL语句程序员可以利用Java语言开发访问数据库的应用。
2、数据库供应商和数据库工具开发商可以提供底层的驱动程序。因此,他们有能力优化各自数据库产品的驱动程序。
JDBC常用接口和类:
JDBC提供了独立于数据库的统一API,用以执行SQL命令。JDBC API由以下常用的接口和类:
DriverManager:
用于管理JDBC驱动的服务类。程序中使用该类的主要功能是获取Connection对象,该类包含如下方法:
public static sysnchronized Connection getConnection(String url,String user,String pass) throws SQLException:该方法获得url对应数据库的连接。
Connection:
代表数据连接对象,每个Connection代表一个物理连接会话。要想访问数据库,必须先获得数据库连接。该接口的常用方法有:
Statement createStatement() throws SQLException:返回一个Statement对象。
PreparedStatement prepareStatement(String sql) throws SQLException:返回预编译的Statement对象,即将SQL语句提交到数据库进行预编译。
CallableStatement  prepareCall(String sql) throws SQLException:返回CallableStatement对象,该对象用于调用存储过程。
上面三个方法都是返回用于执行SQL语句的Statement对象,PreparedStatement、CallableStatement是Statement的子类。只有获得Statement之后才可以执行SQL语句。
初次之外,Connection还有如下用于控制事务的方法:
Savepoint setSavepoint():创建一个保存点。
Savepoint setSavepoint(String name):以制定名称来创建一个保存点。
void setTransactionIsolation(int level):设置事务隔离级别。
void rollback():回滚事务。
void rollback(Savepoint savepoint):将事务回滚到指定的保存点。
void setAutoCommit(boolean autoCommit):关闭自动提交,打开事务。
void commit():提交事务。
Statement:
用于执行SQL语句的工具接口。该对象既可以用于执行DDL、DCL语句,也可以用于执行DML语句,还可用于执行SQL查询。当执行SQL查询时,返回查询到的结果集。常用方法:
ResultSet  executeQuery(String sql) throws SQLException:用于执行查询语句,并返回查询结果对应的ResultSet对象。该方法只能用于执行查询语句。
int executeUpdate(String sql) throws SQLException:用于执行DML语句,并返回受影响的行数;方法可以用于执行DDL,执行DDL将返回0。
boolean execute(String sql) throws SQLException:该方法可执行任何SQL语句。如果执行后第一个结果为ResultSet对象,则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false。
PreparedStatement:
预编译的Statement对象。PreparedStatement是Statement的子接口,它允许数据库预编译SQL语句,以后每次只改变SQL命令的参数,避免数据库每次都需要编译SQL语句,因此性能更好。相对于Statement而言,使用PreparedStatement执行SQL语句时,无须传入SQL参数,因为它已经预编译了SQL语句。但PreparedStatement需要为预编译的SQL语句传入参数值,所以它比Statement多了如下方法:
void SetXxx(int parameterIndex,Xxx value):该方法根据传入参数的类型不同,需要使用不同的方法。传入的值根据索引传给SQL语句中指定为位置的参数。
PreparedStatement同样有executeUpdate、executeQuery和execute三个方法,只是三个方法无须接受SQL字符串,因为PreparedStatement对象已经预编译了SQL命令,只要为这些命令传入参数即可。
ResultSet:
结果集对象。该对象包含访问查询结果的方法,ResultSet可以通过列索引或列名称获得列数据。它常用方法如下:
void close() throws SQLException:释放ResultSet对象。
boolean absolute(int row):将结果集移动到第几行,如果row 是负数,则移动到倒数第几行。如果移动后的记录指针指向一条有效记录,则该方法返回true。
void beforeFirst():将ResultSet的记录指针定位到首行之前,这是ResultSet结果集记录指针的初始状态:记录指针的起始位置位于第一行之前。
boolean first():将ResultSet的记录指针定位到首行。
boolean previous():将ResultSet的记录指针定位到上一行。
boolean next():定位到下一行。
boolean last():定位到最后一行。
void afterLast():定位最后一行之后。

Feedback

# re: JDBC 记录  回复  更多评论   

2011-11-16 09:26 by cuiin
测试111

只有注册用户登录后才能发表评论。


网站导航: