summaryrefslogtreecommitdiff
path: root/connectivity/source/drivers/jdbc/CallableStatement.cxx
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2009-04-23 10:42:05 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2009-04-23 10:42:05 +0000
commitb9392a36645d8632b97ad79240f483b3a1683b61 (patch)
treea7596b538b33f0eb9a47d83a0a19972e72a54da4 /connectivity/source/drivers/jdbc/CallableStatement.cxx
parentcaae90c2a21d3ed30250ebb79dbcc06737f7356b (diff)
CWS-TOOLING: integrate CWS dbaperf1
2009-04-02 09:12:25 +0200 oj r270372 : CWS-TOOLING: rebase CWS dbaperf1 to trunk@270033 (milestone: DEV300:m45) 2009-03-17 10:20:34 +0100 oj r269577 : add parameter 2009-03-17 10:20:05 +0100 oj r269576 : add parameter 2009-03-12 12:32:24 +0100 oj r269387 : add missing ++ 2009-03-11 12:53:35 +0100 oj r269315 : compile error 2009-03-06 08:52:11 +0100 oj r268968 : #i99264# remove duplicate code 2009-03-06 08:20:08 +0100 oj r268966 : add missingheader 2009-03-06 08:17:41 +0100 oj r268965 : add header 2009-03-06 08:15:07 +0100 oj r268964 : #i99708# remove duplicate code 2009-03-06 07:24:11 +0100 oj r268963 : #i99708# remove duplicate code 2009-03-06 07:22:24 +0100 oj r268962 : #i99708# use tenary operator 2009-03-06 07:19:21 +0100 oj r268961 : remove unused rtl_logs 2009-03-06 07:15:55 +0100 oj r268960 : #i99708# extract getLength from for loop 2009-03-06 07:15:35 +0100 oj r268959 : #i99708# extract getLength from for loop 2009-03-06 07:14:57 +0100 oj r268958 : remove unused rtl_logs 2009-03-06 07:13:01 +0100 oj r268957 : insert DBG_ helper 2009-03-06 07:12:17 +0100 oj r268956 : remove unused rtl_logs 2009-03-06 07:10:26 +0100 oj r268955 : remove unused rtl_logs 2009-03-06 07:04:51 +0100 oj r268954 : #i99708# use tenary operator 2009-03-05 12:04:46 +0100 oj r268895 : comment RTL_LOG out 2009-03-05 09:05:07 +0100 oj r268874 : add rtl logfile 2009-03-04 14:21:18 +0100 oj r268828 : #i99708# make static inplace and some method calls in for loop removed 2009-03-04 14:20:34 +0100 oj r268827 : #i99708# impl double check pattern for getInfohelper 2009-03-02 09:31:42 +0100 oj r268636 : add rtl logfile 2009-03-02 08:18:37 +0100 oj r268633 : add rtl logfile 2009-02-27 11:22:16 +0100 oj r268570 : #i99709# change algorithm for marking objects 2009-02-27 11:17:04 +0100 oj r268568 : #i99708# some improvements to load forms, controls faster and replacement of size() call with !empty() which is much faster 2009-02-24 10:09:35 +0100 sb r268383 : #i99290# no longer care to set a sensible context class loader for native threads attached to the VM 2009-02-23 13:44:04 +0100 oj r268354 : #i76606# seekrow changes 2009-02-23 12:27:30 +0100 oj r268349 : deleted 2009-02-20 15:14:23 +0100 oj r268325 : #i76606# some code changes 2009-02-19 14:15:25 +0100 oj r268284 : #i76606# use of simple prep stmt instead of full blown rowset, when source and dest connection are the same use insert into ... ( select ... ) 2009-02-19 11:27:55 +0100 oj r268265 : #i76606# insert some RTL_LOG and setObject impl 2009-02-18 14:45:37 +0100 oj r268222 : #i99363# insert RTL_LOG 2009-02-18 14:45:18 +0100 oj r268221 : #i99363# insert RTL_LOG 2009-02-18 11:14:54 +0100 oj r268207 : #i99363# call some impl_ methods to avoid duplicate cechCache calls 2009-02-18 11:10:47 +0100 oj r268206 : #i99363# make isCount inline 2009-02-18 10:33:22 +0100 oj r268203 : #i99363# use bookmarkable if available and inserted some RTL_LOG 2009-02-18 10:32:57 +0100 oj r268202 : #i99363# use bookmarkable if available and inserted some RTL_LOG 2009-02-17 07:29:05 +0100 oj r267843 : #i96897# remove some dll public 2009-02-16 15:01:04 +0100 oj r267816 : #i96897# remove some dll public 2009-02-16 14:25:53 +0100 oj r267810 : #i99264# remove duplicate code 2009-02-16 14:25:33 +0100 oj r267809 : #i99264# remove duplicate code 2009-02-16 14:24:59 +0100 oj r267808 : #i99264# remove duplicate code 2009-02-13 10:56:17 +0100 oj r267703 : #i99191# comment the contextclassloader 2009-02-13 10:32:40 +0100 oj r267700 : reduce call to resultset meta data 2009-02-13 10:27:31 +0100 oj r267699 : reduce call to resultset meta data 2009-02-13 10:27:08 +0100 oj r267698 : reduce call to resultset meta data
Diffstat (limited to 'connectivity/source/drivers/jdbc/CallableStatement.cxx')
-rw-r--r--connectivity/source/drivers/jdbc/CallableStatement.cxx472
1 files changed, 80 insertions, 392 deletions
diff --git a/connectivity/source/drivers/jdbc/CallableStatement.cxx b/connectivity/source/drivers/jdbc/CallableStatement.cxx
index 921ba6704105..8cea582940d3 100644
--- a/connectivity/source/drivers/jdbc/CallableStatement.cxx
+++ b/connectivity/source/drivers/jdbc/CallableStatement.cxx
@@ -83,78 +83,22 @@ Any SAL_CALL java_sql_CallableStatement::queryInterface( const Type & rType ) th
// -------------------------------------------------------------------------
sal_Bool SAL_CALL java_sql_CallableStatement::wasNull( ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jboolean out(sal_False);
- SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
-
- {
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "()Z";
- static const char * cMethodName = "wasNull";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallBooleanMethod( object, mID );
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- } //mID
- } //t.pEnv
- return out;
+ static jmethodID mID(NULL);
+ return callBooleanMethod( "wasNull", mID );
}
sal_Bool SAL_CALL java_sql_CallableStatement::getBoolean( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jboolean out(sal_False);
- SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
-
- {
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Z";
- static const char * cMethodName = "getBoolean";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallBooleanMethod( object, mID, columnIndex );
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- return out;
+ static jmethodID mID(NULL);
+ return callBooleanMethodWithIntArg( "getBoolean", mID,columnIndex );
}
sal_Int8 SAL_CALL java_sql_CallableStatement::getByte( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jbyte out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
-
- {
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)B";
- static const char * cMethodName = "getByte";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallByteMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- return out;
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jbyte (JNIEnv::*pCallMethod)( jobject obj, jmethodID methodID, ... ) = &JNIEnv::CallByteMethod;
+ return callMethodWithIntArg<jbyte>(pCallMethod,"getByte","(I)B",mID,columnIndex);
}
Sequence< sal_Int8 > SAL_CALL java_sql_CallableStatement::getBytes( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
@@ -163,205 +107,78 @@ Sequence< sal_Int8 > SAL_CALL java_sql_CallableStatement::getBytes( sal_Int32 co
Sequence< sal_Int8 > aSeq;
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jbyteArray out = (jbyteArray)callObjectMethodWithIntArg(t.pEnv,"getBytes","(I)[B", mID, columnIndex);
+ if (out)
{
- createStatement(t.pEnv);
- static const char * cSignature = "(I)[B";
- static const char * cMethodName = "getBytes";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- jbyteArray out(0);
- out = (jbyteArray)t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- if (out)
- {
- jboolean p = sal_False;
- aSeq.realloc(t.pEnv->GetArrayLength(out));
- memcpy(aSeq.getArray(),t.pEnv->GetByteArrayElements(out,&p),aSeq.getLength());
- t.pEnv->DeleteLocalRef(out);
- }
- // und aufraeumen
- } //mID
- } //t.pEnv
+ jboolean p = sal_False;
+ aSeq.realloc(t.pEnv->GetArrayLength(out));
+ memcpy(aSeq.getArray(),t.pEnv->GetByteArrayElements(out,&p),aSeq.getLength());
+ t.pEnv->DeleteLocalRef(out);
+ }
return aSeq;
}
::com::sun::star::util::Date SAL_CALL java_sql_CallableStatement::getDate( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
-
- {
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/sql/Date;";
- static const char * cMethodName = "getDate";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex );
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- // ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jobject out = callObjectMethodWithIntArg(t.pEnv,"getDate","(I)Ljava/sql/Date;", mID, columnIndex);
return out ? static_cast <com::sun::star::util::Date>(java_sql_Date( t.pEnv, out )) : ::com::sun::star::util::Date();
}
double SAL_CALL java_sql_CallableStatement::getDouble( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jdouble out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
- {
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)D";
- static const char * cMethodName = "getDouble";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallDoubleMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- return out;
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ double (JNIEnv::*pCallMethod)( jobject obj, jmethodID methodID, ... ) = &JNIEnv::CallDoubleMethod;
+ return callMethodWithIntArg<double>(pCallMethod,"getDouble","(I)D",mID,columnIndex);
}
float SAL_CALL java_sql_CallableStatement::getFloat( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jfloat out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
-
- {
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)F";
- static const char * cMethodName = "getFloat";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallFloatMethod( object, mID, columnIndex );
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- return out;
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jfloat (JNIEnv::*pCallMethod)( jobject obj, jmethodID methodID, ... ) = &JNIEnv::CallFloatMethod;
+ return callMethodWithIntArg<jfloat>(pCallMethod,"getFloat","(I)F",mID,columnIndex);
}
sal_Int32 SAL_CALL java_sql_CallableStatement::getInt( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jint out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
-
- {
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)I";
- static const char * cMethodName = "getInt";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallIntMethod( object, mID, columnIndex );
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- return (sal_Int32)out;
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ return callIntMethodWithIntArg("getInt",mID,columnIndex);
}
sal_Int64 SAL_CALL java_sql_CallableStatement::getLong( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jlong out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)J";
- static const char * cMethodName = "getLong";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallLongMethod( object, mID, columnIndex );
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- return out;
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jlong (JNIEnv::*pCallMethod)( jobject obj, jmethodID methodID, ... ) = &JNIEnv::CallLongMethod;
+ return callMethodWithIntArg<jlong>(pCallMethod,"getLong","(I)J",mID,columnIndex);
}
Any SAL_CALL java_sql_CallableStatement::getObject( sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& /*typeMap*/ ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/lang/Object;";
- static const char * cMethodName = "getObject";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ /*jobject out = */callObjectMethodWithIntArg(t.pEnv,"getObject","(I)Ljava/lang/Object;", mID, columnIndex);
// ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
return Any(); //out==0 ? 0 : new java_lang_Object( t.pEnv, out );
}
sal_Int16 SAL_CALL java_sql_CallableStatement::getShort( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jshort out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)S";
- static const char * cMethodName = "getShort";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallShortMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
- return (sal_Int16)out;
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jshort (JNIEnv::*pCallMethod)( jobject obj, jmethodID methodID, ... ) = &JNIEnv::CallShortMethod;
+ return callMethodWithIntArg<jshort>(pCallMethod,"getShort","(I)S",mID,columnIndex);
}
::rtl::OUString SAL_CALL java_sql_CallableStatement::getString( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
@@ -369,74 +186,27 @@ sal_Int16 SAL_CALL java_sql_CallableStatement::getShort( sal_Int32 columnIndex )
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- ::rtl::OUString aStr;
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/lang/String;";
- static const char * cMethodName = "getString";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- jstring out = (jstring)t.pEnv->CallObjectMethod( object, mID, columnIndex );
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- aStr = JavaString2String(t.pEnv,out);
- // und aufraeumen
- } //mID
- } //t.pEnv
- // ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
- return aStr;
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ return callStringMethodWithIntArg("getString",mID,columnIndex);
}
::com::sun::star::util::Time SAL_CALL java_sql_CallableStatement::getTime( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
-
- {
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/sql/Time;";
- static const char * cMethodName = "getTime";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jobject out = callObjectMethodWithIntArg(t.pEnv,"getTime","(I)Ljava/sql/Time;", mID, columnIndex);
// ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
return out ? static_cast <com::sun::star::util::Time> (java_sql_Time( t.pEnv, out )) : ::com::sun::star::util::Time();
}
::com::sun::star::util::DateTime SAL_CALL java_sql_CallableStatement::getTimestamp( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/sql/Timestamp;";
- static const char * cMethodName = "getTimestamp";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jobject out = callObjectMethodWithIntArg(t.pEnv,"getTimestamp","(I)Ljava/sql/Timestamp;", mID, columnIndex);
// ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
return out ? static_cast <com::sun::star::util::DateTime> (java_sql_Timestamp( t.pEnv, out )) : ::com::sun::star::util::DateTime();
}
@@ -446,7 +216,7 @@ void SAL_CALL java_sql_CallableStatement::registerOutParameter( sal_Int32 parame
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
+
{
createStatement(t.pEnv);
@@ -454,17 +224,13 @@ void SAL_CALL java_sql_CallableStatement::registerOutParameter( sal_Int32 parame
static const char * cSignature = "(IILjava/lang/String;)V";
static const char * cMethodName = "registerOutParameter";
// Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID )
- {
- // Parameter konvertieren
- jstring str = convertwchar_tToJavaString(t.pEnv,typeName);
- t.pEnv->CallVoidMethod( object, mID, parameterIndex,sqlType,str);
- t.pEnv->DeleteLocalRef(str);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- }
+ static jmethodID mID(NULL);
+ obtainMethodId(t.pEnv, cMethodName,cSignature, mID);
+ // Parameter konvertieren
+ jstring str = convertwchar_tToJavaString(t.pEnv,typeName);
+ t.pEnv->CallVoidMethod( object, mID, parameterIndex,sqlType,str);
+ t.pEnv->DeleteLocalRef(str);
+ ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
}
}
void SAL_CALL java_sql_CallableStatement::registerNumericOutParameter( sal_Int32 parameterIndex, sal_Int32 sqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
@@ -472,48 +238,30 @@ void SAL_CALL java_sql_CallableStatement::registerNumericOutParameter( sal_Int32
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv )
+
{
createStatement(t.pEnv);
// temporaere Variable initialisieren
static const char * cSignature = "(III)V";
static const char * cMethodName = "registerOutParameter";
// Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID )
- {
- t.pEnv->CallVoidMethod( object, mID, parameterIndex,sqlType,scale);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- }
+ static jmethodID mID(NULL);
+ obtainMethodId(t.pEnv, cMethodName,cSignature, mID);
+ t.pEnv->CallVoidMethod( object, mID, parameterIndex,sqlType,scale);
+ ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
}
}
jclass java_sql_CallableStatement::theClass = 0;
-jclass java_sql_CallableStatement::getMyClass()
+jclass java_sql_CallableStatement::getMyClass() const
{
// die Klasse muss nur einmal geholt werden, daher statisch
- if( !theClass ){
- SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( !t.pEnv ) return (jclass)0;
- jclass tempClass = t.pEnv->FindClass("java/sql/CallableStatement"); OSL_ENSURE(tempClass,"Java : FindClass nicht erfolgreich!");
- jclass globClass = (jclass)t.pEnv->NewGlobalRef( tempClass );
- t.pEnv->DeleteLocalRef( tempClass );
- saveClassRef( globClass );
- }
+ if( !theClass )
+ theClass = findMyClass("java/sql/CallableStatement");
return theClass;
}
-void java_sql_CallableStatement::saveClassRef( jclass pClass )
-{
- if( pClass==0 )
- return;
- // der uebergebe Klassen-Handle ist schon global, daher einfach speichern
- theClass = pClass;
-}
-
Reference< ::com::sun::star::io::XInputStream > SAL_CALL java_sql_CallableStatement::getBinaryStream( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
Reference< starsdbc::XBlob > xBlob = getBlob(columnIndex);
@@ -527,99 +275,39 @@ Reference< ::com::sun::star::io::XInputStream > SAL_CALL java_sql_CallableStatem
Reference< starsdbc::XArray > SAL_CALL java_sql_CallableStatement::getArray( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/sql/Array;";
- static const char * cMethodName = "getArray";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jobject out = callObjectMethodWithIntArg(t.pEnv,"getArray","(I)Ljava/sql/Array;", mID, columnIndex);
// ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
return out==0 ? 0 : new java_sql_Array( t.pEnv, out );
}
Reference< starsdbc::XClob > SAL_CALL java_sql_CallableStatement::getClob( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/sql/Clob;";
- static const char * cMethodName = "getClob";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jobject out = callObjectMethodWithIntArg(t.pEnv,"getClob","(I)Ljava/sql/Clob;", mID, columnIndex);
// ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
return out==0 ? 0 : new java_sql_Clob( t.pEnv, out );
}
Reference< starsdbc::XBlob > SAL_CALL java_sql_CallableStatement::getBlob( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/sql/Blob;";
- static const char * cMethodName = "getBlob";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jobject out = callObjectMethodWithIntArg(t.pEnv,"getBlob","(I)Ljava/sql/Blob;", mID, columnIndex);
// ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
return out==0 ? 0 : new java_sql_Blob( t.pEnv, out );
}
Reference< starsdbc::XRef > SAL_CALL java_sql_CallableStatement::getRef( sal_Int32 columnIndex ) throw(starsdbc::SQLException, RuntimeException)
{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jobject out(0);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
- if( t.pEnv ){
- createStatement(t.pEnv);
- // temporaere Variable initialisieren
- static const char * cSignature = "(I)Ljava/sql/Ref;";
- static const char * cMethodName = "getRef";
- // Java-Call absetzen
- static jmethodID mID = NULL;
- if ( !mID )
- mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!");
- if( mID ){
- out = t.pEnv->CallObjectMethod( object, mID, columnIndex);
- ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
- // und aufraeumen
- } //mID
- } //t.pEnv
+ createStatement(t.pEnv);
+ static jmethodID mID(NULL);
+ jobject out = callObjectMethodWithIntArg(t.pEnv,"getRef","(I)Ljava/sql/Ref;", mID, columnIndex);
// ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!!
return out==0 ? 0 : new java_sql_Ref( t.pEnv, out );
}
@@ -650,7 +338,7 @@ void java_sql_CallableStatement::createStatement(JNIEnv* /*_pEnv*/)
// Parameter konvertieren
jstring str = convertwchar_tToJavaString(t.pEnv,m_sSqlStatement);
- static jmethodID mID = NULL;
+ static jmethodID mID(NULL);
if ( !mID )
mID = t.pEnv->GetMethodID( m_pConnection->getMyClass(), cMethodName, cSignature );
if( mID ){