Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
7f38b8d6
Kaydet (Commit)
7f38b8d6
authored
Haz 05, 2013
tarafından
Javier Fernandez
Kaydeden (comit)
Andrzej J.R. Hunt
Tem 16, 2013
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Refactoring some code on the FStatement class.
Change-Id: Id172dde2f35538ac37b632f738fe5c2a87437832
üst
1d7ad324
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
155 additions
and
171 deletions
+155
-171
FConnection.cxx
connectivity/source/drivers/firebird/FConnection.cxx
+7
-0
FDatabaseMetaData.hxx
connectivity/source/drivers/firebird/FDatabaseMetaData.hxx
+0
-1
FPreparedStatement.cxx
connectivity/source/drivers/firebird/FPreparedStatement.cxx
+1
-124
FStatement.cxx
connectivity/source/drivers/firebird/FStatement.cxx
+145
-46
FStatement.hxx
connectivity/source/drivers/firebird/FStatement.hxx
+2
-0
No files found.
connectivity/source/drivers/firebird/FConnection.cxx
Dosyayı görüntüle @
7f38b8d6
...
@@ -127,6 +127,13 @@ Reference< XStatement > SAL_CALL OConnection::createStatement( ) throw(SQLExcep
...
@@ -127,6 +127,13 @@ Reference< XStatement > SAL_CALL OConnection::createStatement( ) throw(SQLExcep
::
osl
::
MutexGuard
aGuard
(
m_aMutex
);
::
osl
::
MutexGuard
aGuard
(
m_aMutex
);
checkDisposed
(
OConnection_BASE
::
rBHelper
.
bDisposed
);
checkDisposed
(
OConnection_BASE
::
rBHelper
.
bDisposed
);
// the pre
if
(
m_aTypeInfo
.
empty
())
buildTypeInfo
();
SAL_INFO
(
"connectivity.firebird"
,
"=> OConnection::createStatement(). "
"Creating statement."
);
// create a statement
// create a statement
// the statement can only be executed once
// the statement can only be executed once
Reference
<
XStatement
>
xReturn
=
new
OStatement
(
this
);
Reference
<
XStatement
>
xReturn
=
new
OStatement
(
this
);
...
...
connectivity/source/drivers/firebird/FDatabaseMetaData.hxx
Dosyayı görüntüle @
7f38b8d6
...
@@ -53,7 +53,6 @@ namespace connectivity
...
@@ -53,7 +53,6 @@ namespace connectivity
class
ODatabaseMetaData
:
public
ODatabaseMetaData_BASE
class
ODatabaseMetaData
:
public
ODatabaseMetaData_BASE
{
{
OConnection
*
m_pConnection
;
OConnection
*
m_pConnection
;
::
com
::
sun
::
star
::
uno
::
Reference
<
::
com
::
sun
::
star
::
sdbc
::
XPreparedStatement
>
m_pGetTablesStm
;
sal_Bool
m_bUseCatalog
;
sal_Bool
m_bUseCatalog
;
public
:
public
:
...
...
connectivity/source/drivers/firebird/FPreparedStatement.cxx
Dosyayı görüntüle @
7f38b8d6
...
@@ -87,130 +87,7 @@ OPreparedStatement::OPreparedStatement( OConnection* _pConnection,const TTypeInf
...
@@ -87,130 +87,7 @@ OPreparedStatement::OPreparedStatement( OConnection* _pConnection,const TTypeInf
SAL_INFO
(
"connectivity.firebird"
,
"=> OPreparedStatement::OPreparedStatement_BASE(). "
SAL_INFO
(
"connectivity.firebird"
,
"=> OPreparedStatement::OPreparedStatement_BASE(). "
"sql: "
<<
sql
);
"sql: "
<<
sql
);
ISC_STATUS_ARRAY
status
;
// status vector
prepareQuery
(
m_sSqlStatement
);
isc_db_handle
db
=
_pConnection
->
getDBHandler
();
// database handle
// enabling the XSQLDA to accommodate up to 10 select-list items (DEFAULT)
m_OUTsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
10
));
m_OUTsqlda
->
version
=
SQLDA_VERSION1
;
m_OUTsqlda
->
sqln
=
10
;
// enabling the XSQLDA to accommodate up to 10 parameter items (DEFAULT)
m_INsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
10
));
m_INsqlda
->
version
=
SQLDA_VERSION1
;
m_INsqlda
->
sqln
=
10
;
m_STMTHandler
=
NULL
;
// Set handle to NULL before allocation.
if
(
isc_dsql_allocate_statement
(
status
,
&
db
,
&
m_STMTHandler
))
if
(
pr_error
(
status
,
"allocate statement"
))
return
;
m_TRANSHandler
=
0L
;
// transaction handle
if
(
isc_start_transaction
(
status
,
&
m_TRANSHandler
,
1
,
&
db
,
0
,
NULL
))
if
(
pr_error
(
status
,
"start transaction"
))
return
;
// sets the statement handle (stmt) to refer to the parsed format.
char
*
sqlStr
=
strdup
(
OUStringToOString
(
m_sSqlStatement
,
RTL_TEXTENCODING_UTF8
).
getStr
());
if
(
isc_dsql_prepare
(
status
,
&
m_TRANSHandler
,
&
m_STMTHandler
,
0
,
sqlStr
,
1
,
m_OUTsqlda
))
if
(
pr_error
(
status
,
"prepare statement"
))
return
;
free
(
sqlStr
);
// fill the input XSQLDA with information about the parameters
if
(
isc_dsql_describe_bind
(
status
,
&
m_STMTHandler
,
1
,
m_INsqlda
))
if
(
pr_error
(
status
,
"bind statement"
))
return
;
XSQLVAR
*
var
=
NULL
;
int
i
,
dtype
;
// determine if the input descriptor can accommodate the number of parameters
// contained in the statement.
if
(
0
==
m_INsqlda
->
sqld
)
{
free
(
m_INsqlda
);
m_INsqlda
=
NULL
;
}
else
{
if
(
m_INsqlda
->
sqld
>
m_INsqlda
->
sqln
)
{
int
n
=
m_INsqlda
->
sqld
;
free
(
m_INsqlda
);
m_INsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
n
));
m_INsqlda
->
sqln
=
n
;
m_INsqlda
->
version
=
SQLDA_VERSION1
;
if
(
isc_dsql_describe_bind
(
status
,
&
m_STMTHandler
,
1
,
m_INsqlda
))
if
(
pr_error
(
status
,
"bind statement 2"
))
return
;
}
}
// fill the output XSQLDA with information about the select-list items.
if
(
isc_dsql_describe
(
status
,
&
m_STMTHandler
,
1
,
m_OUTsqlda
))
if
(
pr_error
(
status
,
"describe statement"
))
return
;
// determine if the output descriptor can accommodate the number of select-list
// items specified in the statement.
if
(
m_OUTsqlda
->
sqld
>
m_OUTsqlda
->
sqln
)
{
int
n
=
m_OUTsqlda
->
sqld
;
free
(
m_OUTsqlda
);
m_OUTsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
n
));
m_OUTsqlda
->
sqln
=
n
;
m_OUTsqlda
->
version
=
SQLDA_VERSION1
;
if
(
isc_dsql_describe
(
status
,
&
m_STMTHandler
,
1
,
m_OUTsqlda
))
if
(
pr_error
(
status
,
"describe statement 2"
))
return
;
}
// Process each XSQLVAR parameter structure in the output XSQLDA
for
(
i
=
0
,
var
=
m_OUTsqlda
->
sqlvar
;
i
<
m_OUTsqlda
->
sqld
;
i
++
,
var
++
)
{
dtype
=
(
var
->
sqltype
&
~
1
);
/* drop flag bit for now */
switch
(
dtype
)
{
case
SQL_VARYING
:
var
->
sqltype
=
SQL_TEXT
;
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
var
->
sqllen
+
2
);
break
;
case
SQL_TEXT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
var
->
sqllen
);
break
;
case
SQL_LONG
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
long
));
break
;
case
SQL_SHORT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
var
->
sqllen
);
break
;
case
SQL_FLOAT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
double
));
break
;
case
SQL_DOUBLE
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
double
));
break
;
case
SQL_D_FLOAT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
double
));
break
;
case
SQL_TIMESTAMP
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
time_t
));
break
;
case
SQL_INT64
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
int
));
break
;
/* process remaining types */
default
:
OSL_ASSERT
(
false
);
break
;
}
if
(
var
->
sqltype
&
1
)
{
/* allocate variable to hold NULL status */
var
->
sqlind
=
(
short
*
)
malloc
(
sizeof
(
short
));
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
...
...
connectivity/source/drivers/firebird/FStatement.cxx
Dosyayı görüntüle @
7f38b8d6
...
@@ -86,8 +86,24 @@ OStatement_Base::OStatement_Base(OConnection* _pConnection )
...
@@ -86,8 +86,24 @@ OStatement_Base::OStatement_Base(OConnection* _pConnection )
m_pConnection
(
_pConnection
)
m_pConnection
(
_pConnection
)
{
{
m_pConnection
->
acquire
();
m_pConnection
->
acquire
();
m_OUTsqlda
=
NULL
;
m_INsqlda
=
NULL
;
ISC_STATUS_ARRAY
status
;
// status vector
isc_db_handle
db
=
m_pConnection
->
getDBHandler
();
// database handle
// enabling the XSQLDA to accommodate up to 10 select-list items (DEFAULT)
m_OUTsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
10
));
m_OUTsqlda
->
version
=
SQLDA_VERSION1
;
m_OUTsqlda
->
sqln
=
10
;
// enabling the XSQLDA to accommodate up to 10 parameter items (DEFAULT)
m_INsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
10
));
m_INsqlda
->
version
=
SQLDA_VERSION1
;
m_INsqlda
->
sqln
=
10
;
m_STMTHandler
=
NULL
;
// Set handle to NULL before allocation.
if
(
isc_dsql_allocate_statement
(
status
,
&
db
,
&
m_STMTHandler
))
if
(
pr_error
(
status
,
"allocate statement"
))
return
;
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
OStatement_Base
::~
OStatement_Base
()
OStatement_Base
::~
OStatement_Base
()
...
@@ -195,6 +211,119 @@ sal_Bool SAL_CALL OStatement_Base::execute( const ::rtl::OUString& sql ) throw(S
...
@@ -195,6 +211,119 @@ sal_Bool SAL_CALL OStatement_Base::execute( const ::rtl::OUString& sql ) throw(S
// returns true when a resultset is available
// returns true when a resultset is available
return
sal_False
;
return
sal_False
;
}
}
void
SAL_CALL
OStatement_Base
::
prepareQuery
(
const
::
rtl
::
OUString
&
sql
)
throw
(
SQLException
,
RuntimeException
)
{
ISC_STATUS_ARRAY
status
;
// status vector
isc_db_handle
db
=
m_pConnection
->
getDBHandler
();
// database handle
m_TRANSHandler
=
0L
;
// transaction handle
if
(
isc_start_transaction
(
status
,
&
m_TRANSHandler
,
1
,
&
db
,
0
,
NULL
))
if
(
pr_error
(
status
,
"start transaction"
))
return
;
// sets the statement handle (stmt) to refer to the parsed format.
char
*
sqlStr
=
strdup
(
OUStringToOString
(
sql
,
RTL_TEXTENCODING_UTF8
).
getStr
());
if
(
isc_dsql_prepare
(
status
,
&
m_TRANSHandler
,
&
m_STMTHandler
,
0
,
sqlStr
,
1
,
m_OUTsqlda
))
if
(
pr_error
(
status
,
"prepare statement"
))
return
;
free
(
sqlStr
);
// fill the input XSQLDA with information about the parameters
if
(
isc_dsql_describe_bind
(
status
,
&
m_STMTHandler
,
1
,
m_INsqlda
))
if
(
pr_error
(
status
,
"bind statement"
))
return
;
XSQLVAR
*
var
=
NULL
;
int
i
,
dtype
;
// determine if the input descriptor can accommodate the number of parameters
// contained in the statement.
if
(
0
==
m_INsqlda
->
sqld
)
{
free
(
m_INsqlda
);
m_INsqlda
=
NULL
;
}
else
{
if
(
m_INsqlda
->
sqld
>
m_INsqlda
->
sqln
)
{
int
n
=
m_INsqlda
->
sqld
;
free
(
m_INsqlda
);
m_INsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
n
));
m_INsqlda
->
sqln
=
n
;
m_INsqlda
->
version
=
SQLDA_VERSION1
;
if
(
isc_dsql_describe_bind
(
status
,
&
m_STMTHandler
,
1
,
m_INsqlda
))
if
(
pr_error
(
status
,
"bind statement 2"
))
return
;
}
}
// fill the output XSQLDA with information about the select-list items.
if
(
isc_dsql_describe
(
status
,
&
m_STMTHandler
,
1
,
m_OUTsqlda
))
if
(
pr_error
(
status
,
"describe statement"
))
return
;
// determine if the output descriptor can accommodate the number of select-list
// items specified in the statement.
if
(
m_OUTsqlda
->
sqld
>
m_OUTsqlda
->
sqln
)
{
int
n
=
m_OUTsqlda
->
sqld
;
free
(
m_OUTsqlda
);
m_OUTsqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
n
));
m_OUTsqlda
->
sqln
=
n
;
m_OUTsqlda
->
version
=
SQLDA_VERSION1
;
if
(
isc_dsql_describe
(
status
,
&
m_STMTHandler
,
1
,
m_OUTsqlda
))
if
(
pr_error
(
status
,
"describe statement 2"
))
return
;
}
// Process each XSQLVAR parameter structure in the output XSQLDA
for
(
i
=
0
,
var
=
m_OUTsqlda
->
sqlvar
;
i
<
m_OUTsqlda
->
sqld
;
i
++
,
var
++
)
{
dtype
=
(
var
->
sqltype
&
~
1
);
/* drop flag bit for now */
switch
(
dtype
)
{
case
SQL_VARYING
:
var
->
sqltype
=
SQL_TEXT
;
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
var
->
sqllen
+
2
);
break
;
case
SQL_TEXT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
var
->
sqllen
);
break
;
case
SQL_LONG
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
long
));
break
;
case
SQL_SHORT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
char
)
*
var
->
sqllen
);
break
;
case
SQL_FLOAT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
double
));
break
;
case
SQL_DOUBLE
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
double
));
break
;
case
SQL_D_FLOAT
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
double
));
break
;
case
SQL_TIMESTAMP
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
time_t
));
break
;
case
SQL_INT64
:
var
->
sqldata
=
(
char
*
)
malloc
(
sizeof
(
int
));
break
;
/* process remaining types */
default
:
OSL_ASSERT
(
false
);
break
;
}
if
(
var
->
sqltype
&
1
)
{
/* allocate variable to hold NULL status */
var
->
sqlind
=
(
short
*
)
malloc
(
sizeof
(
short
));
}
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
Reference
<
XResultSet
>
SAL_CALL
OStatement_Base
::
executeQuery
(
const
::
rtl
::
OUString
&
sql
)
throw
(
SQLException
,
RuntimeException
)
Reference
<
XResultSet
>
SAL_CALL
OStatement_Base
::
executeQuery
(
const
::
rtl
::
OUString
&
sql
)
throw
(
SQLException
,
RuntimeException
)
...
@@ -202,60 +331,30 @@ Reference< XResultSet > SAL_CALL OStatement_Base::executeQuery( const ::rtl::OUS
...
@@ -202,60 +331,30 @@ Reference< XResultSet > SAL_CALL OStatement_Base::executeQuery( const ::rtl::OUS
SAL_INFO
(
"connectivity.firebird"
,
"=> OStatement_Base::executeQuery(). "
SAL_INFO
(
"connectivity.firebird"
,
"=> OStatement_Base::executeQuery(). "
"Got called with sql: "
<<
sql
);
"Got called with sql: "
<<
sql
);
char
sqlStr
[
128
];
strcpy
(
sqlStr
,
OUStringToOString
(
sql
,
RTL_TEXTENCODING_ASCII_US
).
getStr
());
::
osl
::
MutexGuard
aGuard
(
m_aMutex
);
::
osl
::
MutexGuard
aGuard
(
m_aMutex
);
checkDisposed
(
OStatement_BASE
::
rBHelper
.
bDisposed
);
checkDisposed
(
OStatement_BASE
::
rBHelper
.
bDisposed
);
Reference
<
XResultSet
>
xRS
=
NULL
;
ISC_STATUS_ARRAY
status
;
// status vector
// create a resultset as result of executing the sql statement
// you have to here something :-)
ISC_STATUS_ARRAY
status
;
/* status vector */
prepareQuery
(
sql
);
isc_db_handle
db
=
NULL
;
/* database handle */
isc_tr_handle
trans
=
NULL
;
/* transaction handle */
isc_stmt_handle
stmt
=
NULL
;
/* prepared statement handle */
XSQLDA
*
sel_sqlda
;
int
CURRENLEN
=
10
;
char
orig_name
[
CURRENLEN
+
1
];
if
(
isc_
attach_database
(
status
,
0
,
"new.fdb"
,
&
db
,
0
,
NULL
))
if
(
isc_
dsql_execute
(
status
,
&
m_TRANSHandler
,
&
m_STMTHandler
,
1
,
m_INsqlda
))
if
(
pr_error
(
status
,
"
attach database
"
))
if
(
pr_error
(
status
,
"
execute query
"
))
return
xRS
;
return
NULL
;
if
(
isc_start_transaction
(
status
,
&
trans
,
1
,
&
db
,
0
,
NULL
))
Reference
<
OResultSet
>
pResult
(
new
OResultSet
(
this
)
);
if
(
pr_error
(
status
,
"start transaction"
))
//initializeResultSet( pResult.get() );
return
xRS
;
Reference
<
XResultSet
>
xRS
=
pResult
.
get
()
;
sel_sqlda
=
(
XSQLDA
*
)
malloc
(
XSQLDA_LENGTH
(
1
));
if
(
isc_commit_transaction
(
status
,
&
m_TRANSHandler
))
sel_sqlda
->
sqln
=
1
;
if
(
pr_error
(
status
,
"commit transaction"
))
sel_sqlda
->
version
=
1
;
return
NULL
;
if
(
isc_dsql_allocate_statement
(
status
,
&
db
,
&
stmt
))
SAL_INFO
(
"connectivity.firebird"
,
"=> OStatement::executeQuery(). "
if
(
pr_error
(
status
,
"allocate statement"
))
"Query executed."
);
return
xRS
;
if
(
isc_dsql_prepare
(
status
,
&
trans
,
&
stmt
,
0
,
sqlStr
,
1
,
sel_sqlda
))
if
(
pr_error
(
status
,
"prepare statement"
))
return
xRS
;
sel_sqlda
->
sqlvar
[
0
].
sqldata
=
orig_name
;
close
();
sel_sqlda
->
sqlvar
[
0
].
sqltype
=
SQL_TEXT
;
sel_sqlda
->
sqlvar
[
0
].
sqllen
=
CURRENLEN
;
if
(
isc_dsql_execute
(
status
,
&
trans
,
&
stmt
,
1
,
NULL
))
if
(
pr_error
(
status
,
"execute query"
))
return
xRS
;
if
(
isc_dsql_fetch
(
status
,
&
stmt
,
1
,
sel_sqlda
))
if
(
pr_error
(
status
,
"fetch data"
))
return
xRS
;
if
(
isc_commit_transaction
(
status
,
&
trans
))
isc_print_status
(
status
);
SAL_INFO
(
"connectivity.firebird"
,
"=> OStatement_Base::executeQuery(). "
"Changes committed."
);
m_xResultSet
=
xRS
;
// we nedd a reference to it for later use
return
xRS
;
return
xRS
;
}
}
...
...
connectivity/source/drivers/firebird/FStatement.hxx
Dosyayı görüntüle @
7f38b8d6
...
@@ -102,6 +102,8 @@ namespace connectivity
...
@@ -102,6 +102,8 @@ namespace connectivity
virtual
void
SAL_CALL
getFastPropertyValue
(
virtual
void
SAL_CALL
getFastPropertyValue
(
::
com
::
sun
::
star
::
uno
::
Any
&
rValue
,
::
com
::
sun
::
star
::
uno
::
Any
&
rValue
,
sal_Int32
nHandle
)
const
;
sal_Int32
nHandle
)
const
;
virtual
void
SAL_CALL
prepareQuery
(
const
::
rtl
::
OUString
&
sql
)
throw
(
::
com
::
sun
::
star
::
sdbc
::
SQLException
,
::
com
::
sun
::
star
::
uno
::
RuntimeException
);
virtual
~
OStatement_Base
();
virtual
~
OStatement_Base
();
public
:
public
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment