User: rt      
Date: 2008-01-30 07:54:56+0000
Modified:
   dba/connectivity/source/drivers/jdbc/PreparedStatement.cxx

Log:
 INTEGRATION: CWS dba24d (1.18.54); FILE MERGED
 2007/12/01 13:36:42 fs 1.18.54.3: RESYNC: (1.18-1.20); FILE MERGED
 2007/11/09 13:32:39 oj 1.18.54.2: #i56643# wrong check
 2007/11/06 09:04:02 oj 1.18.54.1: #i51965# impl updateNumericObject and 
setObjectWithInfo

File Changes:

Directory: /dba/connectivity/source/drivers/jdbc/
=================================================

File [changed]: PreparedStatement.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/jdbc/PreparedStatement.cxx?r1=1.20&r2=1.21
Delta lines:  +50 -4
--------------------
--- PreparedStatement.cxx       2007-11-27 12:02:47+0000        1.20
+++ PreparedStatement.cxx       2008-01-30 07:54:54+0000        1.21
@@ -50,6 +50,7 @@
 #ifndef _CONNECTIVITY_JAVA_SQL_TIMESTAMP_HXX_
 #include "java/sql/Timestamp.hxx"
 #endif
+#include "java/math/BigDecimal.hxx"
 #ifndef _CONNECTIVITY_JAVA_TOOLS_HXX_
 #include "java/tools.hxx"
 #endif
@@ -516,9 +517,54 @@
 }
 // -------------------------------------------------------------------------
 
-void SAL_CALL java_sql_PreparedStatement::setObjectWithInfo( sal_Int32 
/*parameterIndex*/, const ::com::sun::star::uno::Any& /*x*/, sal_Int32 
/*targetSqlType*/, sal_Int32 /*scale*/ ) 
throw(::com::sun::star::sdbc::SQLException, 
::com::sun::star::uno::RuntimeException)
+void SAL_CALL java_sql_PreparedStatement::setObjectWithInfo( sal_Int32 
parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, 
sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, 
::com::sun::star::uno::RuntimeException)
 {
-    ::dbtools::throwFeatureNotImplementedException( 
"XParameters::setObjectWithInfo", *this );
+    m_aLogger.log( LogLevel::FINER, STR_LOG_OBJECT_NULL_PARAMETER, 
parameterIndex );
+
+    SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!");
+       if( t.pEnv ){
+               createStatement(t.pEnv);
+
+               // temporaere Variable initialisieren
+               static const char * cSignature = "(ILjava/lang/Object;II)V";
+               static const char * cMethodName = "setObject";
+               // Java-Call absetzen
+               static jmethodID mID = NULL;
+               if ( !mID  )
+                       mID  = t.pEnv->GetMethodID( getMyClass(), cMethodName, 
cSignature );OSL_ENSURE(mID,"Unknown method id!");
+               if( mID ){
+            jobject obj = NULL;
+            double nTemp = 0.0;
+            switch(targetSqlType)
+            {
+                case DataType::DECIMAL:
+                           case DataType::NUMERIC:
+                    {
+                        ::std::auto_ptr<java_math_BigDecimal> pBigDecimal;
+                        if ( x >>= nTemp)
+                        {
+                            pBigDecimal.reset(new java_math_BigDecimal(nTemp));
+                            //setDouble(parameterIndex,nTemp);
+                            //return;
+                        }
+                        else
+                            pBigDecimal.reset(new 
java_math_BigDecimal(::comphelper::getString(x)));
+                            //obj = 
convertwchar_tToJavaString(t.pEnv,::comphelper::getString(x));
+                        t.pEnv->CallVoidMethod( object, mID, 
parameterIndex,pBigDecimal->getJavaObject(),targetSqlType,scale);
+                        ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
+                        return;
+                    }
+                    break;
+                default:
+                    obj = 
convertwchar_tToJavaString(t.pEnv,::comphelper::getString(x));
+                    break;
+            }
+                       t.pEnv->CallVoidMethod( object, mID, 
parameterIndex,obj,targetSqlType,scale);
+            t.pEnv->DeleteLocalRef(obj);
+                       ThrowLoggedSQLException( m_aLogger, t.pEnv, *this );
+                       // und aufraeumen
+               } //mID
+       } //t.pEnv
 }
 // -------------------------------------------------------------------------
 
@@ -639,7 +685,7 @@
                        // Java-Call absetzen
                        jclass aClass = 
t.pEnv->FindClass("java/io/CharArrayInputStream");
                        static jmethodID mID2 = NULL;
-                       if ( mID2  )
+                       if ( !mID2  )
                                mID2  = t.pEnv->GetMethodID( aClass, "<init>", 
cSignatureStream );
                        jobject tempObj = NULL;
                        if(mID2)
@@ -687,7 +733,7 @@
                        // Java-Call absetzen
                        jclass aClass = 
t.pEnv->FindClass("java/io/ByteArrayInputStream");
                        static jmethodID mID2 = NULL;
-                       if ( mID2  )
+                       if ( !mID2  )
                                mID2  = t.pEnv->GetMethodID( aClass, "<init>", 
cSignatureStream );
                        jobject tempObj = NULL;
                        if(mID2)




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to