JDBC对象

JDBC对象

1.Driver

   建立了ODBC数据源后,就可以在Java程序中通过JDBC-ODBC接口连接数据库了。无论是用JDBC-ODBC还是直接用JDBC,都需要用到Driver,即用Class.forName()方法来加载驱动程序。


  在用JDBC之前,要在文件前导入有关SQL类,则用下面的语句。

1
import java.sql.*;

  如果使用的是JDBC-ODBC的方法,则应使用下面的语句。

1
Class.forName("sun.jdbc.odbc.Jdbc.OdbcDriver");

  如果使用的是JDBC,则应使用以下形式。

1
Class.forName("jdbc.driver_class_name");

  其中driver_class_name是驱动的类名。如:

1
2
private static final String driver="com.mysql.jdbc.Driver";
Class.forName(driver);

2.DriverManager

  用DriverManager的**getConnection()**方法可以创建一个数据库连接对象,它的一般形式如下:

1
2
3
public static Connection getConnection(String url) throws SQLException
public static Connection getConnection(String url,String user,String password) throws SQLException
public static Connection getConnection(String url,java.util.Properties info) throws SQLException

 参数user是指连接数据库时使用的用户名;参数password是指连接数据库时的用户user的登录密码;参数info是作为连接参数的任意字符串标记/值对的列表,通常至少应该包括”user”和”password”属性;参数url是指连接数据库的URL。该方法返回一个连接,一般用一个连接对象接收返回对象。

如:

1
2
3
4
5
6
7
8
private static final String url="jdbc:mysql://localhost:3306/demo1";
private static final String user="root";
private static final String password="987654zmd";
try {
Connection con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}

  DriverManager在JDBC规范中是类而不是接口。它是一个服务类,用于管理JDBC驱动程序,提供getConnection()方法建立应用程序与数据库的连接。当JDBC驱动程序载入到内存时,会自己主动向DriverManager注冊。此行代码发出连接请求,DriverManager类就会用注冊的JDBC驱动程序来创建到数据库的连接。

  DriverManager.getConnection()是个静态方法。

  DriverManager在java.sql包中。当我们调用sql包里不论什么一个类(包含接口)的不论什么一个方法时都会报一个编译时异常SQLException。这里我们使用一个try块后跟多个catch块解决。


常用的数据库软件的url写法:

  Oracle: jdbc:oracle:thin:@ip:1521:dbName;

  MySql:jdbc:mysql://ip:3306:dbName;
  SQLServer:jdbc:sqlserver://ip:1443;databaseName=dbName;

当使用本机ip地址连接时须要关闭防火墙。否则连接不上,使用localhost或127.0.0.1则不用关闭防火墙。


3.Connection

  一个Connection对象表示与特定数据库的连接,主要用于执行SQL语句并得到执行的结果。默认情况下,Connection对象处于自动提交模式下,也就是说它在执行每个SQL语句后都会自动提交更改,如果禁用自动提交模式,为了提交更改就必须调用commit()方法,否则将无法保存数据库更改。


常量

  1. TRANSACTION_NONE

    指示事务不受支持的常量。

  2. TRANSACTION_READ_UNCOMMITTED

    指示可以发生脏读 (dirty read)、不可重复读和虚读 (phantom read) 的常量。此级别允许由某一事务更改的行在已提交该行中的所有更改之前被另一个事务读取(“脏读”)。如果所有更改都被回滚,则第二个事务将检索无效的行。

  3. TRANSACTION_READ_COMMITTED

    指示防止发生脏读的常量;不可重复读和虚读有可能发生。此级别只禁止事务读取其中带有未提交更改的行。

  4. TRANSACTION_REPEATABLE_READ

    指示防止发生脏读和不可重复读的常量;虚读有可能发生。此级别禁止事务读取其中带有未提交更改的行,它还禁止这种情况:一个事务读取某一行,而另一个事务更改该行,第一个事务重新读取该行,并在第二次读取时获得不同的值(“不可重复读”)。

  5. TRANSACTION_SERIALIZABLE

    指示防止发生脏读、不可重复读和虚读的常量。此级别包括TRANSACTION_REPEATABLE_READ中禁止的事项并进一步禁止出现这种情况:某一事务读取所有满足WHERE条件的行,另一个事务插入一个满足WHERE条件的行,第一个事务重新读取满足相同条件的行,并在第二次读取时检索到额外的“虚”行。


常用的方法

  1. close()

      此方法用来立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放。在已经关闭的Connection对象调用close()方法将什么事也不做。

    1
    void  close()  throws  SQLException

  2. commit()

      此方法使自从上一次提交以来进行的所有更改成为持久更改,并释放此Connection对象当前保存的所有数据库锁定。此方法应该只在已禁用自动提交模式时使用。

    1
    void  commit()  throws  SQLException

  3. createStatement()

      此方法创建一个Statement对象将SQL语句发送到数据库。没有参数的SQL语句通常使用Statement对象执行。如果多次执行相同的SQL语句,使用PrepareStatement对象可能更加有效。

    1
    2
    3
    Statement createStatement() throws SQLException
    Statement createStatement(int resultSetType,int resultSetConcurrency) throws SQLException
    Statement createStatement(int resultSetType,int resultSetConcurrency,int resultSetHoldability) throws SQLException

  4. getAutoCommit()

      检索当前Connection对象的自动提交模式。如果是true表示是自动提交模式,如果是false表示禁用自动提交模式,而需要开发人员在程序中显示地使用commit()提交事务。

    1
    boolean getAutoCommit() throws SQLException

  5. getMetaDate()

      获取DatabaseMetaDate对象,该对象包含关于Connection对象连接到的数据库的元数据。元数据包括关于数据库的表、受支持的SQL语法、存储过程、此连接的功能等信息。

    1
    DatabaseMetaDate getMetaData() throws SQLException

  6. getTransactionIsolation()

      得到当前Connection对象的当前事务隔离级别。

    1
    int getTransactionIsolation() throws SQLException

  7. isClosed()

      检查当前Connection对象是否已经被关闭。如果已经连接上,在调用close()方法或者发生某些严重的错误后会关闭Connection。isClosed()方法只保证在已经调用Connection.close()方法之后被调用时返回true。

    1
    boolean isClosed() throws SQLException

  8. isReadOnly()

      判断当前Connection对象是否处于只读模式,是返回true,否则返回false。

    1
    boolean isReadOnly() throws SQLException

  9. prepareCall()

      创建一个CallableStatement对象来调用数据库存储过程。CallableStatement对象提供了设置其输入(IN)和输出(out)参数的方法,以及用来执行对存储过程的调用方法。方法返回一个包含预编译的SQL语句的新的CallableStatement对象。

    1
    2
    3
    CallableStatement prepareCall(String sql) throws SQLException
    CallableStatement prepareCall(String sql) throws SQLException
    CallableStatement prepareCall(String sql) throws SQLException

  10. prepareStatement()

      此方法创建一个PrepareStatement对象,以用这个对象来将参数化的SQL语句发送到数据库。带有输入(IN)参数或不带有输入(IN)参数的SQL语句都可以被预编译并存储在PrepareStatement对象中,然后可以使用此对象来多次执行该语句。

    1
    PrepareStatement prepareStatement(String sql) throws SQLException

      prepareStatement可以对SQL语句做预编译处理,但前提是数据库驱动程序要支持预编译,prepareStatement方法会将该语句发送给数据库进行预编译。有的数据库驱动程序可能不支持预编译,此时执行PrepareStatement对象之前无法将语句发送给数据库。


  11. rollbavk()

      取消在当前事务中进行的所有更改,并释放当前Connection对象保存的所有数据库锁定。

    rollback()方法只能在已禁用自动提交模式时使用。

    1
    void rollbavk() throws SQLException
  12. setAutoCommit()

      将当前连接的自动提交模式设置为给定状态。如果连接处于自动提交模式下,则将执行其所有SQL语句,并将这些语句作为单独的事务提交。否则,其SQL语句将成组地进入通过调用commit()方法或rollback()方法终止的事务中。默认情况下,新的连接处于自动提交模式下。

    1
    void setAutoCommit(boolean autoCommit) throws SQLException

      autoCommit参数为true表示启用自动提交模式;为false表示禁用自动提交模式。


  13. serHoldability()

      将使用当前Connection对象创建的ResultSet对象的可保存性更改为给定的可保存性。

    1
    void serHoldability(int holdability) throws SQLException

  14. setReadOnly()

      此方法用于将当前连接设置为只读模式。

    1
    void setReadOnly(boolean readOnly) throws SQLException
  15. setTransactionIsolation()

      将当前connection对象的事务隔离级别更改为给定的级别。

    1
    void setTransactionIsolation(int level) throws SQLException

4.Statement

  Statement类对象代表SQL语句,可用于将SQL语句发送至数据库。其中存在三种Statemen对象,一是Statemen,用来执行基本的SQL语句;二是PreparedStatement,它从Statement继承而来,用于提供可以与查询信息一起预编译的语句;三是CallableStatement,它继承自PreparedStatement,用来执行数据库中的存储过程。

  Statement用于执行静态SQL语句并返回它所生成结果的对象。在默认情况下,同一时刻每个Statement对象只能打开一个ResultSet对象,因此如果读取一个ResultSet对象与读取另一个交叉,则这两个对象必须是由不同的Statement对象生成的。如果存在某个语句打开的当前ResultSet对象,则Statement接口中的所有执行方法都会隐式关闭它。


常量

  1. CLOSE_CURRENT_RESULT

    该常量指示调用 getMoreResults 时应该关闭当前 ResultSet 对象。

  2. KEEP_CURRENT_RESULT

    该常量指示调用 getMoreResults时应该关闭当前 ResultSet对象。

  3. CLOSE_ALL_RESULTS

    该常量指示调用 getMoreResults时应该关闭以前一直打开的所有 ResultSet对象。

  4. SUCCESS_NO_INFO

    该常量指示批量语句执行成功但不存在受影响的可用行数计数。

  5. EXECUTE_FAILED

    该常量指示在执行批量语句时发生错误。

  6. RETURN_GENERATED_KEYS

    该常量指示生成的键应该可用于检索。

  7. NO_GENERATED_KEYS

    该常量指示生成的键应该不可用于检索。


常用方法

  1. addBatch()

      addBatch()方法用于将给定的SQL命令添加到此Statement对象的当前命令列表中,此后通过调用executeBatch()方法可以批量执行此列表的命令。参数sql通常为静态的SQL insert或update语句。

    1
    void addBatch(String sql) throws SQLException

  2. cancel()

      如果数据库管理系统和数据库驱动程序都支持终止SQL语句,则取消此Statement对象。一个线程可以使用此方法取消另一个线程正在执行的语句。

    1
    void cancel() throws SQLException

  3. clearBatch()

      清空此Statement对象的当前SQL命令列表。

    1
    void clearBatch() throws SQLException

  4. close()

      立即释放当前Statement对象的数据库和JDBC资源而不是等待该对象自动关闭时发生此操作。在使用完Statement对象后立即释放资源是一个好的习惯,这样可以避免对数据库资源的占用。

    1
    void close() throws SQLException

  5. execute()

      执行给定的SQL语句,该语句可能返回多个结果。execute()方法指示第一个结果的形式。如果第一个为ResultSet对象,则返回true;如果其为更新计数或者不存在任何结果,则返回false。执行SQL语句后,必须使用方法getResultSet()或getUpdateCount()来检索结果,使用getMoreResults()来移动后续成果。

    1
    boolean execute(String sql) throws SQLException

  6. executeBatch()

      将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。返回数组的int元素的排序对应批中的命令。

    1
    int[] executeBatch() throws SQLException

  7. executeQuery()

      执行给定的SQL语句,该语句返回单个ResultSet对象。参数sql是要发送给数据库的SQL语句。通常为静态SQL select语句。

    1
    ResultSet executeQuery(String sql) throws SQLException

  8. executeUpdate()

      执行给定SQL语句,该语句可能为insert、update、delete语句,或者不返回任何内容的SQL语句。该函数返回SQL语句所影响的行数,如果是不返回任何内容的SQL语句或没有影响的行数则返回0;

    1
    int executeUpdate(String sql) throws SQLException
  9. getConnection()

      得到当前Statement对象的Connection对象。

    1
    Connection getConnection() throws SQLException

  10. getMaxFieldSize()

      获得可以为当前Statement对象所生成ResultSet对象中的字符和二进制列值返回的最大字节数。

    1
    int getMaxFieldSize() throws SQLException

  11. getMaxRows()

      获得当前Statement对象生成的ResultSet对象可以包含的最大行数。

    1
    int getMaxRows() throws SQLException

  12. getMordResults()

      移动到当前Statement对象的下一个结果,如果这个结果为ResultSet对象,则返回true,并隐式关闭利用getResultSet()方法获取的所有当前ResultSet对象。

    1
    boolean getMordResults() throws SQLException

  13. getSesultSet()

      得到当前Statement对象执行SQL的结果ResultSet,如果结果是更新计数或没有更多的结果则返回null。

    1
    ResultSet getSesultSet() throws SQLException

  14. getUpdateCount()

      得到当前Statement对象执行SQL结果,结果以更新计数的形式返回;如果当前结果为ResultSet对象或没有更多结果,则返回-1。

    1
    int getUpdateCount() throws SQLException

  15. isClosed()

      验证当前Statement对象是否已经被关闭,如果已经被关闭则返回true,否则返回false。

    1
    boolean isClosed() throws SQLException

  16. setMaxFieldSize()

      设置将字符或二进制存储到给定ResultSet列中的最大字节数限制。

    1
    void setMaxFieldSize(int max) throws SQLException

  17. setMaxRows()

      设置通过当前Statement对象所能获得的任何ResultSet对象都可以包含的最大行数限制,如果超过了该限制,则会撤销多出的行。

    1
    void setMaxRows(int max) throws SQLException

5.PreparedStatement

  PreparedStatement用于表示预编译SQL语句的对象。SQL语句被预编译并且存储在PreparedStatement对象中,然后可以使用此对象高效地多次执行语句。

  PreparedStatement是预编译的,使用PreparedStatement有几个好处 :

  1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。
  2. 安全性好,有效防止Sql注入等问题。
  3. 对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch
  4. 代码的可读性和可维护性。

  PreparedStatement接口声明如下:

1
public interface PreparedStatement extends Statement;

  可见PreparedStatement接口扩展了Statement接口,下面列出不是继承自Statement接口的一个常用方法:

1
void setXxxx(int parameterIndex,Xxxx x) throws SQLException;

  将SQL语句中给定的第parameterIndex个参数设为x,Xxxx表示数据类型,于是有如下常用的表示形式:

1
2
3
4
5
6
7
8
9
10
11
void setboolean(int parameterIndex,boolean x) throws SQLException;
void setByte(int parameterIndex,Byte x) throws SQLException;
void setBytes(int parameterIndex,Byte x[]) throws SQLException;
void setDate(int parameterIndex,java.sql.Date x) throws SQLException;
void setDouble(int parameterIndex,Double x) throws SQLException;
void setfloat(int parameterIndex,float x) throws SQLException;
void setInt(int parameterIndex,int x) throws SQLException;
void setLong(int parameterIndex,long x) throws SQLException;
void setObject(int parameterIndex,Object x) throws SQLException;
void setShort(int parameterIndex,Short x) throws SQLException;
void setString(int parameterIndex,String x) throws SQLException;

  parameterIndex参数表示第几个参数,编号从1开始,也就是第一个参数的parameterIndex为1,第二个参数的parameterIndex为2。

  比如给用户表添加一个用户:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public boolean AddUser(Reader r){//添加用户  Reader为用户实体类
String sql = "insert into reader (Rname,Rpassword,phone,Rsex,type) value (?,?,?,?,?)";
boolean bo=false;
Object []objects={r.getRname(),r.getRpassword(),r.getphone(),r.getRsex(),r.gettype()};
bo=sqlUpdate(sql, objects);
return bo;
}



public boolean sqlUpdate(String sql, Object[] objects) {
boolean b = false;
con = getUtilsConnection();
try {
pstmt = con.prepareStatement(sql);//预编译SQL语句
if (objects != null) {
for (int i = 0; i < objects.length; i++) {
pstmt.setObject(i + 1, objects[i]);//设置参数,就是上面SQL的问号
}
}
int row = 0;
row = pstmt.executeUpdate();
if (row > 0) {
b = true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
close(con, pstmt, null);
}

return b;
}

6.CallableStatement

  CallableStatement是用于执行SQL存储过程的接口。JDBC API提供了一个存储过程SQL转义语法,该语法允许对所有数据库管理系统使用标准方式调用存储过程,此转义语法有一个包含结果参数的形式和一个不包含结果参数的形式。它支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持。

1
2
{?= call <procedure-name>[<arg1>,<arg2>,...]}
{call <procedure-name>[<arg1>,<arg2>,...]}

  存储过程的输入参数值是使用从PreparedStatement中继承的set方法设置的,在执行存储过程之前,必须注册所有输出参数的类型;它们的值是在执行后通过此类提供的get方法获得的。注册输出参数使用registerOutParameter()方法,有如下的几种形式。

1
2
void registerOutParameter(int parameterIndex,int sqlType) throws SQLException
void registerOutParameter(int parameterIndex,int sqlType,int scale) throws SQLException

  以上方法的功能是按顺序位置parameterIndex将输出参数注册为JDBC类型sqlType。由sqlType指定的输出参数的JDBC类型确定必须用getXxxx()方法来读取该参数值的java类型。如果预期返回给此输出参数的JDBC类型是取决于此特定数据库的,则sqlType应该是java.sql.Type,OTHER。方法getobject(int)检索该值。

  要得到存储过程的返回结果集一般使用PreparedStatement类的excuteQuery()方法,而不必去注册输出参数,excuteQuery()方法也是最为常用的得到输出参数值的方法。

  CallableStatement可以返回一个ResultSet对象或多个ResultSet对象。多个ResultSet对象是使用从Statement中继承的操作处理的。

  为了获得良好的可移植性,某一调用的ResultSet对象和更新计数应该在获得输出参数的值之前处理。


7.ResultSet

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

  默认情况下,ResultSet对象不可更新,且仅有一个向前移动的指针,因此只能迭代它一次,并且只能按从第一行到最后一行的顺序进行。可以生成可滚动或可更新的ResultSet对象。以下代码片段演示了如何生成可滚动且不受其他更新影响的、可更新的结果记录集。

1
2
Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABKE);
ResultSet rs =stmt.executeQuery("SELECT 字段名1,字段名2, FROM 表名");
  1. 更新当前行中的列值

        在可滚动的ResultSet对象中,可以向前和向后移动指针,将其置于绝对位置或相对于当前行的位置,以下代码片段更新ResultSet对象rs的第五行中的NAME列,然后使用方法updateRow()更新用于生成结果记录集rs的数据源表。

    1
    2
    3
    rs.absolute(5);//将指针移动到结果记录集rs的第五条
    rs.updateString("NAME","zhai");//将第五条记录的NAME值改为zhai
    rs.updateRow();//更新数据库中的数据
  2. 将列值插入到插入行中

        可更新的ResultSet对象具有一个与其关联的特殊行,该行用作构建要插入的行的暂存区域。以下代码片段将指针移动到插入行,构建一个3列的行,并使用insertRow()方法将其插入到结果记录集rs和数据源表中。

    1
    2
    3
    4
    5
    6
    rs.moveToInsertRow();//移动当前记录指针标到insert row
    rs.updateString(1,"zhai");//将insert row中第一列的值更新为zhai
    rs.updateInt(2,21);//将insert row中第二列的值更新为35
    rs.updateBoolean(3,true);//将insert row中第三列的值更新为true
    rs.insertRow();//更新数据
    rs.moveToCurrentRow();

      insert row是结果记录集中的一个特殊的记录,它实质上是构造的一个数据缓冲区。


常量

  1. FETCH_FORWARD

      该常量指示将按正向(即从第一个到最后一个)处理结果集中的行。setFetchDirection方法将此常量用作驱动程序的提示,驱动程序可能忽略它。

  2. FETCH_REVERSE

      该常量指示将按反向(即从最后一个到第一个)处理结果集中的行处理。setFetchDirection方法将此常量用作驱动程序的提示,驱动程序可能忽略它。

  3. FETCH_UNKNOWN

      该常量指示结果集中的行的处理顺序未知。setFetchDirection方法将此常量用作驱动程序的提示,驱动程序可能忽略它。

  4. TYPE_FORWARD_ONLY

      该常量指示指针只能向前移动的 ResultSet对象的类型。

  5. TYPE_SCROLL_INSENSITIVE

      该常量指示可滚动但通常不受其他的更改影响的 ResultSet对象的类型。

  6. TYPE_SCROLL_SENSITIVE 该常量指示可滚动并且通常受其他的更改影响的 ResultSet对象的类型。

  7. CONCUR_READ_ONLY

      该常量指示不可以更新的 ResultSet对象的并发模式。

  8. CONCUR_UPDATABLE

      该常量指示可以更新的 ResultSet对象的并发模式。

  9. HOLD_CURSORS_OVER_COMMIT

      该常量指示调用 Connection.commit方法时不应关闭 ResultSet对象。

  10. CLOSE_CURSORS_AT_COMMIT

    该常量指示调用 Connection.commit方法时应该关闭 ResultSet对象。


常用方法

  1. absolute()

      absolute()方法用于将指针移动到此SesultSet对象的给定行编号。如果编号为正,则将指针移动到相对于结果记录集开头的给定行编号,第一行为行1,第二行为行2,以此类推。

    1
    boolean absolute(int row) throws SQLException

      如果给定行编号为负,则将指针移动到相对于结果记录集末尾的绝对行位置。列如,absolute(-1)将指针置于最后一行;absolute(-2)将指针移动到倒数第二行,以此类推。

    调用absolute(1)等效于调用first(),调用absolute(-1)等效于调用last()


  2. afterLast()

      将指针移动到此ResultSet对象的末尾,正好位于最后一行之后。如果结果记录集中不包含任何行,则此方法无效。

    1
    void afterLast() throws SQLException

  3. beforeFirst()

      将指针移动到此ResultSet对象的开头,正好位于第一行之前。

    1
    void beforeFirst() throws SQLException

  4. cancelRowUpdates()

      取消对ResultSet对象中的当前行所作的更新。此方法在调用更新方法之后,但在调用updateRow()之前调用才可以后滚对行所作的更新。

    1
    void cancelRowUpdates() throws SQLException

  5. close()

      立即释放此ResultSet对象的数据库和JDBC资源。

    1
    void close() throws SQLException

  6. deleteRow()

      从当前ResultSet对象和底层数据库删除当前行。指针不位于插入行时不能调用此方法。

    1
    void deleteRow() throws SQLException

  7. first()

      将指针移动到当前ResulSet对象的第一行。

    1
    boolean first() throws SQLException

  8. getXxxx(int columnIndex)

      此方法以Java中的数据类型来得到ResultSet对象中当前行的第columnIndex列的值,第一个列的columnIndex为1,第二个列的columnIndex为2,以此类推

    1
    xxxx getXxxx(int columnIndex) throws SQLException

  9. getXxxx(String columnName)

      此方法以Java中的数据类型来得到ResultSet对象中当前行的列名为columnName列的值。

    1
    xxxx getXxxx(String columnName) throws SQLException

  10. getConcurrency()

      得到当前ResultSet对象的并发模式,值为ResultSet.CONCUR_READ_ONLY或ResultSet.CONCUR_UPDATABLE。

    1
    int getConcurrency() throws SQLException

  11. getRow()

      得到当前行的编号。第一行为1号,第二行为2号,以此类推。

    1
    int getRow() throws SQLException

  12. getType()

      得到当前ResultSet对象的类型,返回值为Result.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE或ResultSet.TYPE_SCROLL_SENSITIVE中的一个。

    1
    int getType() throws SQLException

  13. insertRow()

      将插入行的内容插入到当前ResultSet对象和数据库中,此时当前指针必须位于插入行上。如果发生数据库访问错误,或者当前指针不位于插入行上时调用此方法,或者插入行中所有不可为null的列中还存在未分配值的列,则会抛出SQLException异常。

    1
    void insertRow() throws SQLException

  14. isAfterLast()

      判断当前指针是否位于ResultSet对象的最后一行之后,是则返回true,否则返回false。

    1
    boolean isAfterLast() throws SQLException

  15. isBeforeFirst()

      判断当前指针是否位于ResultSet对象的第一行之前,是则返回true,否则返回false。

    1
    boolean isBeforeFirst() throws SQLException

  16. isFirst()

      判断当前指针是否位于ResultSet对象的第一行,是则返回true,否则返回false。

    1
    boolean isFirst() throws SQLException

  17. isLast()

      判断当前指针是否位于ResultSet对象的最后一行,是则返回true,否则返回false。

    1
    boolean isLast() throws SQLException

  18. last()

      将指针移动到当前ResultSet对象的最后一行。

    1
    boolean last() throws SQLException

  19. moveToInsertRow()

      将指针移动到插入行。将指针置于插入行时,当前的指针位置会被记住。插入行是一个与可更新结果集相关联的特殊行。它实际上是一个缓冲区,在将行插入到结果集前可以通过调用更新方法在其中构造新行。当指针位于插入行上时,仅能调用更新方法、获取方法以及insertRow()方法。每次在调用insertRow()之前调用此方法时,必须为结果集中的所有列分配值。在对列值调用获取方法之前,必须调用更新方法。如果发生数据库访问错误或者结果集不可更新将会抛出SQLException异常。

    1
    void moveToInsertRow() throws SQLException

  20. next()

      将指针从当前位置下移一行。

    1
    boolean next() throws SQLException

  21. relative()

      将当前指针移动到ResultSet对象的上一行。

    1
    boolean relative() throws SQLException

  22. relative()

      按相对行数(或正或负)移动指针。参数row指定从当前行开始移动的行数,正数表示指针向前移动,负数表示指针向后移动。调用relative(0)有效,但是不更改指针位置。

  23. updateXxxx(int columnIndex,xxxx x)

      用指定的Java数据类型更新当前行的第columnIndex列的值。

    1
    void updateXxxx(int  columnIndex,xxxx  x) throws SQLException

  24. updateXxxx(String columnName,xxxx x)

      用指定的Java数据类型更新当前列columnName的值。

    1
    void updateXxxx(String  columnName,xxxx  x) throws SQLException

      调用此方法并不会更新底层数据库;更新数据库要调用updateRow()或inserRow()方法。


  25. updateRow()

      将ResultSet对象的当前行的新内容更新底层数据库。指针不位于插入行上时不能调用此方法。

    1
    void updateRow() throws SQLException
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×