DriverMannager Public static Connection synchronized getConnection( String url ) throws SQLException; Public static Connection synchronized getConnection( String url, java.util.Properties info); //Properties包含了用于特定数据库的所需要的参数。 Public static Connection synchronized getConnection( String url, String user , String password); 注:所有这些方法都是同步的,意味着多个应用程序不能直接得到同一个Connection对象。 Public static void setLotinTimeout(int seconds); Public static void getLotinTimeout();
可滚动的和可更新的结果集 在JDBC2.1以前,在缺省的情况下,执行语句所创建的结果集只能向前滚动。也就是说只能用next()方法在结果集中导航。当到达最后一条记录时,next()方法就会返会false,而不能取得更多的纪录信息。 可滚动的结果集 包括向前滚动和向后滚动 滚动的相关性 滚动非相关的结果集表示查询执行后的一个静态快照。可滚动的相关结果集,在查询执行后,对数据的修改很敏感,因此,它表示的是能够知道数据变化的动态的快照。 可修改的结果集 结果集在缺省的情况下是只读的。也就是说,结果集中的内容是只读的,不能被修改。可修改的结果集,当结果被修改后,修改操作就会按照结果集中的数据修改原始数据。
可滚动的结果集 java.sql.ResutSet接口定义了三种类型的结果集: TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE 双向滚动 TYPE_SCROLL_SENSITIVE 这种结果集,在结果集得到后,对数据所做的修改很敏感。例如,如果查询返回十行数据,而另一个应用程序删除了另外的两行,那这个结果集中就只用八行数据了。
与游标位置有关的方法: public boolean isBeforeFirst( ) throws SQLException public boolean isAfterLast( ) throws SQLException public boolean isFirst( ) throws SQLException public boolean isLast( ) throw SQLException
用于滚动的方法: public boolean first( ) throws SQLException public boolean last( ) throws SQLException public boolean absolute( int row ) throws SQLException //absolute把游标位置移到结果集中特定的行.行参数可为正或者负,负表示把游标向相反的方向移动,为正向前移动. Public boolean relative( int row ) throws SQLException //这个方法根据游标的当前位置把游标移动到另一个项对位置.当游标位置无效时,不应该调用这个方法.例如,循环调用next( )直到next( )返回false(表示到达结果集的最后),就不应该调用这个方法.在调用relative( )之前,应当用absolute( ),first( )或last( )方法把游标置于有效的位置. Public boolean previous( ) throws SQLException 数据获取方向和尺寸的方法: public void setFetchDirection( int direction ) throws SQLException //这个方法获取数据方向.java.sql.ResultSet接口定义了三个定义获取方向的常数ResultSet.FETCH_UNKNOWN,ResultSet.FETCH_FORWARD和ResultSet.FETCH-REVERSE.这些常数指明了结果集中当前的数据获取方向. Public void setFachSize( ) throws SQLException //这个告诉JDBC驱动器,应当从数据库中要获取的行的数量.注意,当获取尺寸设置为1时,那么在调用next( )时,结果集每次都会从数据库中获取数据.通过设置较大的获取尺寸,能够一次获取更多的行数,从而能够优化获取过程.
可修改的结果集: 可修改的结果集,当结果集被修改后,更新操作会按照当前集中的数据修改原始数据。 CONCUR_READ_ONLY CONCUR_UPDATEABLE 可修改的。(在ResultSet中定义) 1.更新一行 使用update***( )方法更新结果集当前行中的元素 public void updateTimestamp( int columnIndex , Timestamp x) public void updateTimestamp( String columnName ,Timestamp x) 当调用了这些方法后,应当调用updateRow( )方法来更新所做的修改.另外,也可以调用cancelRowUpdate( )方法取消已完成的修改. RowUpdate()方法用于确定当前行是否被修改了.返回值取决于结果集是否能够探测到更新. 2.删除一行 可以调用deleteRow( )方法从结果集中删除当前行,并且提交道数据库.rowDeleted( )方法用于确定某行是否已经被删除.注意,一个被删除的行可能在结果集中占用一个空位置rowDeleted( )方法可以探测这个空位置. 3.插入一行 要在结果集中插入一行,并且提交到数据库,应当首先调用moveToInsertRow( )方法,调用moveToInsertRow( )会把游标移动到所插入的行.被插入的行是一个与可更新的结果集相关联的缓存行,调用update***( )方法设置行中的其他元素,这些结束后,应当调用insertRow( )方法最后在数据库中真正插入一行.
ResultSetMetaData ResultSetMetaData metaData = rs.getMetaData( ); getColumenClassName( int i);//返回该列java数据类型的类名 getColumenTypeName( int I );//返回该列DB数据类型名 getColumnConut( ); //返回结果集中的列数. getColumnLabel( int I );//返回打印数出和现实的建议列标题 getColumnName( int i);//获得列名 isAutoIncrement( int i );//列是否自动记数,为只读. IsNullable( int I );//该列I是否可以放一个null值
关于事物支持 try { //begin a transaction connnection.setAutoCommit(false); Statement statment = connection.createSatement();
//update table1 sttement.executeUpdate( " insert into table1~~~~~~~~~~~" );
//update table2 statment.executeUpdate( "update table table2~~~~~~~~~" ); if( something ){ //Business logic succeeded statement.executeUpdate( "sqlString" ); connection.commit(); }else{ connection.roollback(); }
} catch (SQLException e) { //Handle exception here } finally{ //close the statment and connection }
|
JDBC
最新推荐文章于 2024-03-27 07:57:24 发布