summaryrefslogtreecommitdiff
path: root/connectivity/source/drivers/firebird/FPreparedStatement.cxx
diff options
context:
space:
mode:
authorJavier Fernandez <jfernandez@igalia.com>2013-06-05 15:06:05 +0000
committerJavier Fernandez <jfernandez@igalia.com>2013-06-06 09:37:45 +0000
commitfee888daa2c40493c04fd34d630ebe87d439cefa (patch)
treec72f5b66ac5484805b0c166e80ce9c4e292ece0f /connectivity/source/drivers/firebird/FPreparedStatement.cxx
parentc5cc994b731a289843a767e049befea228d1a08c (diff)
Refactoring some code on the FStatement class.
Change-Id: Id172dde2f35538ac37b632f738fe5c2a87437832
Diffstat (limited to 'connectivity/source/drivers/firebird/FPreparedStatement.cxx')
-rw-r--r--connectivity/source/drivers/firebird/FPreparedStatement.cxx125
1 files changed, 1 insertions, 124 deletions
diff --git a/connectivity/source/drivers/firebird/FPreparedStatement.cxx b/connectivity/source/drivers/firebird/FPreparedStatement.cxx
index 1f3d6bb740dc..fe8b432fdf93 100644
--- a/connectivity/source/drivers/firebird/FPreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/FPreparedStatement.cxx
@@ -87,130 +87,7 @@ OPreparedStatement::OPreparedStatement( OConnection* _pConnection,const TTypeInf
SAL_INFO("connectivity.firebird", "=> OPreparedStatement::OPreparedStatement_BASE(). "
"sql: " << sql);
- ISC_STATUS_ARRAY status; // status vector
- 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));
- }
- }
+ prepareQuery(m_sSqlStatement);
}
// -----------------------------------------------------------------------------