private Statement createStatement ( Connection con , boolean scrollable , int explicitFetchSizeHint ) throws java . sql . SQLException { Statement result ; try { // if necessary use JDBC1.0 methods if ( ! FORCEJDBC1_0 ) { result = con . createStatement ( scrollable ? ResultSet . TYPE_SCROLL_INSENSITIVE : ResultSet . TYPE_FORWARD_ONLY , ResultSet . CONCUR_READ_ONLY ) ; afterJdbc2CapableStatementCreate ( result , explicitFetchSizeHint ) ; } else { result = con . createStatement ( ) ; } } catch ( AbstractMethodError err ) { // if a JDBC1.0 driver is used, the signature // createStatement(int, int) is not defined. // we then call the JDBC1.0 variant createStatement() log . warn ( "Used driver seems not JDBC 2.0 compatible, use the JDBC 1.0 mode" , err ) ; result = con . createStatement ( ) ; FORCEJDBC1_0 = true ; } catch ( SQLException eSql ) { // there are JDBC Driver that nominally implement JDBC 2.0, but // throw DriverNotCapableExceptions. If we catch one of these // we force usage of JDBC 1.0 if ( eSql . getClass ( ) . getName ( ) . equals ( "interbase.interclient.DriverNotCapableException" ) ) { log . warn ( "JDBC 2.0 problems with this interbase driver, we use the JDBC 1.0 mode" ) ; FORCEJDBC1_0 = true ; result = con . createStatement ( ) ; } else { throw eSql ; } } try { platform . afterStatementCreate ( result ) ; } catch ( PlatformException e ) { log . error ( "Platform dependend failure" , e ) ; } return result ; }
Creates a statement with parameters that should work with most RDBMS .