JDBC

来源:互联网 发布:深入浅出mfc源码 编辑:程序博客网 时间:2024/04/28 09:32

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_FORWARDResultSet.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

              }

 

 

 

原创粉丝点击