|
From: <car...@ho...> - 2002-06-15 22:43:35
|
Hello:
I´m testing the last cvs sources and i have ( under Visual Foxpro )
problems with SQL statements that have string parameters ( the results
of the execution are incorrect ) that are not null terminated strings, i
have this solution for this problem:
OdbcStatement.cpp:
void OdbcStatement::setParameter(Binding * binding, int parameter)
{
clearErrors();
if (binding && binding->indicatorPointer && *(binding->indicatorPointer)
== SQL_NULL_DATA)
{
statement->setNull(parameter, 0);
return;
}
try
{
switch (binding->cType)
{
case SQL_C_CHAR:
{
switch( *binding->indicatorPointer )
{
case SQL_NTS:
statement->setString (parameter, (char*) binding->pointer );
break;
default:
statement->setString (parameter, (char*)binding->pointer,
*binding->indicatorPointer );
break;
}
}
break;
.................
}
Connection.h:
#define PREPAREDSTATEMENT_VERSION 1
class PreparedStatement : public Statement
{
public:
.........
virtual void setString(int index, const char * string, int length) = 0;
.........
}
IscCallableStatement.h:
class IscCallableStatement : public IscPreparedStatement, public
CallableStatement
{
public:
............
virtual void setString(int index, const char * string, int length);
............
}
IscCallableStatement.cpp:
void IscCallableStatement::setString(int index, const char * string, int
length)
{
Parent::setString(index, string, length);
}
IscPreparedStatement.h:
class IscPreparedStatement : public IscStatement, public PreparedStatement
{
public:
.........
virtual void setString(int index, const char * string, int length);
.........
}
IscPreparedStatement.cpp:
void IscPreparedStatement::setString(int index, const char * string, int
length)
{
getParameter (index - 1)->setString (length, string, true);
}
Best Regards
Carlos Guzmán Álvarez
|