diff options
author | Javier Fernandez <jfernandez@igalia.com> | 2013-06-05 15:06:05 +0000 |
---|---|---|
committer | Javier Fernandez <jfernandez@igalia.com> | 2013-06-06 09:37:45 +0000 |
commit | fee888daa2c40493c04fd34d630ebe87d439cefa (patch) | |
tree | c72f5b66ac5484805b0c166e80ce9c4e292ece0f /connectivity/source/drivers/firebird/FPreparedStatement.cxx | |
parent | c5cc994b731a289843a767e049befea228d1a08c (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.cxx | 125 |
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); } // ----------------------------------------------------------------------------- |