数据库访问:JDBC(17.1)
JDBC应用概述
1.载入JDBC驱动程序
2.定义链接URL
3.建立链接。
4.创建Statement对象。
5.执行查询或更新。
6.结果处理。
7.关闭连接。
Connection类还包括其他一些有用的方法,我们接下来对它们进行简短的介绍。
prepareStatement
创建预编译查询,提交给数据库。
prepareCall
访问数据库中的存储过程。
rollback/commit
控制食物管理。
close
终止打开的连接。
isClose
确定连接是否超时或被显示关闭。
Statement类中常用的方法:
executeQuery
执行SQL查询并在ResultSet中返回数据。ResultSet可能为空,但不会为null。
executeUpdate
用于UPDATE,INSERT或DELETE命令。返回受影响的行数,可以为0.
executeBatch
将一组命令作为一个单元执行,返回一个数组,其中存储每个命令的更新计数。addBatch可以想批量执行的命令组中添加命令。
setQueryTimeout
指定驱动程序在抛出SQLException异常之前,等待处理结果的时间。
getMaxRows/setMaxRows
确定ResultSet可能容纳的最大行数。超过的行将会再不给出任何警告的情况下丢弃。默认值为0。表示没有限制。
ResultSet中的一些有用方法
next/previous
将ResultSet中的游标分别移动到下一行(任何JDBC版本)或前一行(JDBC2.0以及以后版本)
relative/absolute
relative方法将游标相对地移动特定数目的行,或正或负(向前或者向后)。absolute方法将游标移动到给定的行号。如果绝对值是负数,那么游标将相对于ResultSet的结尾进行定位(JDBC2.0)
getXxx
返回Xxx Java类型的值
wasNull
检查上面的getXxx独到的是否为SQL的NULL值。
findColumn
返回ResultSet中的指定列名对应的索引。
getRow
返回当前的行号。第一行从1开始。
getMetaData
返回描述ResultSet的ResultSetMetaData对象。ResultSetMetaData给出列的数目和名称。
通过ResultSetMetaData类的作用,我们可以确定ResultSet中列的数目、名称和类型。
ResultSetMetaData的一些有用方法
getColumnCount
返回ResultSet中的列的数目。
getColumnName
返回列在数据库中的名称(索引从1开始)
getColumnType
返回列的SQL类型,对应java.sql.Types中的项。
isReadOnly
表示数据项是否为只读值
isSearchable
表名该列是否可以用WHERE子句中。
isNullable
表名该列是否可以存储NULL
创建可调用语句
1.定义数据库过程的调用
2.为这个过程准备CallableStatement
3.注册输出参数的类型。
4.为输入参数提供之。
5.只选哪个这个存储过程。
6.访问返回的输出参数。
定义对数据库过程的调用
无参数过程
{ call procedure_name }
仅有输入参数的过程
{ call procedure_name(?, ?, ...) }
有一个输出参数的过程
{ ? call procedure_name }
既有输入参数又有输出参数的过程
{ ? = call procedure_name(?, ?, ...) }
如果过程返回输出参数,那么输入参数的索引必须要考虑输出参数的数目。
示例:
connection.prepareCall("{ ? = call discount( ?, ? ) }");
statement.setString(2, composer);
statement.setFloat(3, discount);
statement.registerOutParameter(1, Types.INTEGER);
statement.execute();
int rows = statement.getInt(1);
作者“mistbow”