wxDbConnectInf::wxDbConnectInf()
{
Henv = 0;
- freeHenvOnDestroy = FALSE;
+ freeHenvOnDestroy = false;
Initialize();
} // Constructor
const wxString &fileType, const wxString &description)
{
Henv = 0;
- freeHenvOnDestroy = FALSE;
+ freeHenvOnDestroy = false;
Initialize();
/********** wxDbConnectInf::Initialize() **********/
bool wxDbConnectInf::Initialize()
{
- freeHenvOnDestroy = FALSE;
+ freeHenvOnDestroy = false;
if (freeHenvOnDestroy && Henv)
FreeHenv();
FileType.Empty();
DefaultDir.Empty();
- useConnectionStr = FALSE;
+ useConnectionStr = false;
- return TRUE;
+ return true;
} // wxDbConnectInf::Initialize()
if (SQLAllocEnv(&Henv) != SQL_SUCCESS)
{
wxLogDebug(wxT("A problem occured while trying to get a connection to the data source"));
- return FALSE;
+ return false;
}
- freeHenvOnDestroy = TRUE;
+ freeHenvOnDestroy = true;
- return TRUE;
+ return true;
} // wxDbConnectInf::AllocHenv()
SQLFreeEnv(Henv);
Henv = 0;
- freeHenvOnDestroy = FALSE;
+ freeHenvOnDestroy = false;
} // wxDbConnectInf::FreeHenv()
void wxDbConnectInf::SetConnectionStr(const wxString &connectStr)
{
wxASSERT(connectStr.Length() < sizeof(ConnectionStr));
-
+
useConnectionStr = wxStrlen(connectStr) > 0;
wxStrcpy(ConnectionStr, connectStr);
} // wxDbColFor::wxDbColFor()
-wxDbColFor::~wxDbColFor()
-{
-} // wxDbColFor::~wxDbColFor()
-
-
/********** wxDbColFor::Initialize() **********/
void wxDbColFor::Initialize()
{
/********** wxDbColFor::Format() **********/
int wxDbColFor::Format(int Nation, int dbDataType, SWORD sqlDataType,
- short columnSize, short decimalDigits)
+ short columnLength, short decimalDigits)
{
// ----------------------------------------------------------------------------------------
// -- 19991224 : mj10777 : Create
if (decimalDigits == 0)
decimalDigits = 2;
tempStr = wxT("%");
- tempStr.Printf(wxT("%s%d.%d"),tempStr.c_str(),columnSize,decimalDigits);
- s_Field.Printf(wxT("%sf"),tempStr.c_str());
+ tempStr.Printf(wxT("%s%d.%d"), tempStr.c_str(),columnLength, decimalDigits);
+ s_Field.Printf(wxT("%sf"), tempStr.c_str());
break;
case DB_DATA_TYPE_DATE:
if (i_Nation == 0) // timestamp YYYY-MM-DD HH:MM:SS.SSS (tested for SYBASE)
}
break;
case DB_DATA_TYPE_BLOB:
- s_Field.Printf(wxT("Unable to format(%d)-SQL(%d)"),dbDataType,sqlDataType); //
+ s_Field.Printf(wxT("Unable to format(%d)-SQL(%d)"), dbDataType,sqlDataType); //
break;
default:
- s_Field.Printf(wxT("Unknown Format(%d)-SQL(%d)"),dbDataType,sqlDataType); //
+ s_Field.Printf(wxT("Unknown Format(%d)-SQL(%d)"), dbDataType,sqlDataType); //
break;
};
return TRUE;
} // wxDbColFor::Format()
-
/********** wxDbColInf Constructor **********/
wxDbColInf::wxDbColInf()
{
colName[0] = 0;
sqlDataType = 0;
typeName[0] = 0;
- columnSize = 0;
- bufferLength = 0;
+ columnLength = 0;
+ bufferSize = 0;
decimalDigits = 0;
numPrecRadix = 0;
nullable = 0;
FkTableName[0] = 0;
pColFor = NULL;
- return TRUE;
+ return true;
} // wxDbColInf::Initialize()
numCols = 0;
pColInf = NULL;
- return TRUE;
+ return true;
} // wxDbTableInf::Initialize()
numTables = 0;
pTableInf = NULL;
- return TRUE;
+ return true;
} // wxDbInf::Initialize()
typeInfBlob.MaximumScale = 0;
// Error reporting is turned OFF by default
- silent = TRUE;
+ silent = true;
// Allocate a data source connection handle
if (SQLAllocConnect(henv, &hdbc) != SQL_SUCCESS)
DB_STATUS = 0;
// Mark database as not open as of yet
- dbIsOpen = FALSE;
- dbIsCached = FALSE;
- dbOpenedWithConnectionString = FALSE;
+ dbIsOpen = false;
+ dbIsCached = false;
+ dbOpenedWithConnectionString = false;
} // wxDb::initialize()
*/
// Mark database as open
- dbIsOpen = TRUE;
+ dbIsOpen = true;
// Allocate a statement handle for the database connection
if (SQLAllocStmt(hdbc, &hstmt) != SQL_SUCCESS)
// Set Connection Options
if (!setConnectionOptions())
- return(FALSE);
+ return false;
// Query the data source for inf. about itself
if (!getDbInfo(failOnDataTypeUnsupported))
- return(FALSE);
+ return false;
// Query the data source regarding data type information
// VARCHAR = Variable length character string
if (!getDataTypeInfo(SQL_VARCHAR, typeInfVarchar))
if (!getDataTypeInfo(SQL_CHAR, typeInfVarchar))
- return(FALSE);
+ return false;
else
typeInfVarchar.FsqlType = SQL_CHAR;
else
if (!getDataTypeInfo(SQL_NUMERIC,typeInfFloat))
{
if (failOnDataTypeUnsupported)
- return(FALSE);
+ return false;
}
else
typeInfFloat.FsqlType = SQL_NUMERIC;
if (!getDataTypeInfo(typeInfFloat.FsqlType, typeInfInteger))
{
if (failOnDataTypeUnsupported)
- return(FALSE);
+ return false;
}
else
typeInfInteger.FsqlType = typeInfFloat.FsqlType;
#endif // SQL_DATETIME defined
{
if (failOnDataTypeUnsupported)
- return(FALSE);
+ return false;
}
}
else
if (!getDataTypeInfo(SQL_VARBINARY,typeInfBlob))
{
if (failOnDataTypeUnsupported)
- return(FALSE);
+ return false;
}
else
typeInfBlob.FsqlType = SQL_VARBINARY;
#endif
// Completed Successfully
- return(TRUE);
+ return true;
}
bool wxDb::Open(const wxString& inConnectStr, bool failOnDataTypeUnsupported)
inConnectionStr = inConnectStr;
retcode = SQLDriverConnect(hdbc, NULL, (SQLTCHAR FAR *)inConnectionStr.c_str(),
- inConnectionStr.Length(), (SQLTCHAR FAR *)outConnectBuffer,
+ (SWORD)inConnectionStr.Length(), (SQLTCHAR FAR *)outConnectBuffer,
sizeof(outConnectBuffer), &outConnectBufferLen, SQL_DRIVER_COMPLETE );
if ((retcode != SQL_SUCCESS) &&
outConnectBuffer[outConnectBufferLen] = 0;
outConnectionStr = outConnectBuffer;
- dbOpenedWithConnectionString = TRUE;
+ dbOpenedWithConnectionString = true;
return open(failOnDataTypeUnsupported);
}
inConnectionStr = copyDb->GetConnectionInStr();
retcode = SQLDriverConnect(hdbc, NULL, (SQLTCHAR FAR *)inConnectionStr.c_str(),
- inConnectionStr.Length(), (SQLTCHAR FAR *)outConnectBuffer,
+ (SWORD)inConnectionStr.Length(), (SQLTCHAR FAR *)outConnectBuffer,
sizeof(outConnectBuffer), &outConnectBufferLen, SQL_DRIVER_COMPLETE);
if ((retcode != SQL_SUCCESS) &&
outConnectBuffer[outConnectBufferLen] = 0;
outConnectionStr = outConnectBuffer;
- dbOpenedWithConnectionString = TRUE;
+ dbOpenedWithConnectionString = true;
}
else
{
*/
// Mark database as open
- dbIsOpen = TRUE;
+ dbIsOpen = true;
// Allocate a statement handle for the database connection
if (SQLAllocStmt(hdbc, &hstmt) != SQL_SUCCESS)
// Set Connection Options
if (!setConnectionOptions())
- return(FALSE);
+ return false;
// Instead of Querying the data source for info about itself, it can just be copied
// from the wxDb instance that was passed in (copyDb).
#endif
// Completed Successfully
- return(TRUE);
+ return true;
} // wxDb::Open() 2
// I need to get the DBMS name here, because some of the connection options
// are database specific and need to call the Dbms() function.
- if (SQLGetInfo(hdbc, SQL_DBMS_NAME, (UCHAR*) dbInf.dbmsName, 40, &cb) != SQL_SUCCESS)
+ RETCODE retcode;
+
+ retcode = SQLGetInfo(hdbc, SQL_DBMS_NAME, (UCHAR *) dbInf.dbmsName, sizeof(dbInf.dbmsName), &cb);
+ if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
return(DispAllErrors(henv, hdbc));
- SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF);
- SQLSetConnectOption(hdbc, SQL_OPT_TRACE, SQL_OPT_TRACE_OFF);
+ /* retcode = */ SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF);
+ /* retcode = */ SQLSetConnectOption(hdbc, SQL_OPT_TRACE, SQL_OPT_TRACE_OFF);
// SQLSetConnectOption(hdbc, SQL_TXN_ISOLATION, SQL_TXN_READ_COMMITTED); // No dirty reads
// By default, MS Sql Server closes cursors on commit and rollback. The following
{
const long SQL_PRESERVE_CURSORS = 1204L;
const long SQL_PC_ON = 1L;
- SQLSetConnectOption(hdbc, SQL_PRESERVE_CURSORS, SQL_PC_ON);
+ /* retcode = */ SQLSetConnectOption(hdbc, SQL_PRESERVE_CURSORS, SQL_PC_ON);
}
// Display the connection options to verify them
long l;
cout << wxT("****** CONNECTION OPTIONS ******") << endl;
- if (SQLGetConnectOption(hdbc, SQL_AUTOCOMMIT, &l) != SQL_SUCCESS)
+ retcode = SQLGetConnectOption(hdbc, SQL_AUTOCOMMIT, &l);
+ if (retcode != SQL_SUCCESS)
return(DispAllErrors(henv, hdbc));
cout << wxT("AUTOCOMMIT: ") << (l == SQL_AUTOCOMMIT_OFF ? "OFF" : "ON") << endl;
- if (SQLGetConnectOption(hdbc, SQL_ODBC_CURSORS, &l) != SQL_SUCCESS)
+ retcode = SQLGetConnectOption(hdbc, SQL_ODBC_CURSORS, &l);
+ if (retcode != SQL_SUCCESS)
return(DispAllErrors(henv, hdbc));
cout << wxT("ODBC CURSORS: ");
switch(l)
- {
+ {
case(SQL_CUR_USE_IF_NEEDED):
cout << wxT("SQL_CUR_USE_IF_NEEDED");
break;
case(SQL_CUR_USE_DRIVER):
cout << wxT("SQL_CUR_USE_DRIVER");
break;
- }
- cout << endl;
+ }
+ cout << endl;
- if (SQLGetConnectOption(hdbc, SQL_OPT_TRACE, &l) != SQL_SUCCESS)
+ retcode = SQLGetConnectOption(hdbc, SQL_OPT_TRACE, &l)
+ if (retcode != SQL_SUCCESS)
return(DispAllErrors(henv, hdbc));
cout << wxT("TRACING: ") << (l == SQL_OPT_TRACE_OFF ? wxT("OFF") : wxT("ON")) << endl;
#endif
// Completed Successfully
- return(TRUE);
+ return true;
} // wxDb::setConnectionOptions()
SWORD cb;
RETCODE retcode;
- retcode = SQLGetInfo(hdbc, SQL_SERVER_NAME, (UCHAR*) dbInf.serverName, 80, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_SERVER_NAME, (UCHAR*) dbInf.serverName, sizeof(dbInf.serverName), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_DATABASE_NAME, (UCHAR*) dbInf.databaseName, 128, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_DATABASE_NAME, (UCHAR*) dbInf.databaseName, sizeof(dbInf.databaseName), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_DBMS_NAME, (UCHAR*) dbInf.dbmsName, 40, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_DBMS_NAME, (UCHAR*) dbInf.dbmsName, sizeof(dbInf.dbmsName), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
// 16-Mar-1999
// After upgrading to MSVC6, the original 20 char buffer below was insufficient,
// causing database connectivity to fail in some cases.
- retcode = SQLGetInfo(hdbc, SQL_DBMS_VER, (UCHAR*) dbInf.dbmsVer, 64, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_DBMS_VER, (UCHAR*) dbInf.dbmsVer, sizeof(dbInf.dbmsVer), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_ACTIVE_CONNECTIONS, (UCHAR*) &dbInf.maxConnections, sizeof(dbInf.maxConnections), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_ACTIVE_STATEMENTS, (UCHAR*) &dbInf.maxStmts, sizeof(dbInf.maxStmts), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_DRIVER_NAME, (UCHAR*) dbInf.driverName, 40, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_DRIVER_NAME, (UCHAR*) dbInf.driverName, sizeof(dbInf.driverName), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_DRIVER_ODBC_VER, (UCHAR*) dbInf.odbcVer, 60, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_DRIVER_ODBC_VER, (UCHAR*) dbInf.odbcVer, sizeof(dbInf.odbcVer), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_ODBC_VER, (UCHAR*) dbInf.drvMgrOdbcVer, 60, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_ODBC_VER, (UCHAR*) dbInf.drvMgrOdbcVer, sizeof(dbInf.drvMgrOdbcVer), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_DRIVER_VER, (UCHAR*) dbInf.driverVer, 60, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_DRIVER_VER, (UCHAR*) dbInf.driverVer, sizeof(dbInf.driverVer), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_ODBC_API_CONFORMANCE, (UCHAR*) &dbInf.apiConfLvl, sizeof(dbInf.apiConfLvl), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_ODBC_SAG_CLI_CONFORMANCE, (UCHAR*) &dbInf.cliConfLvl, sizeof(dbInf.cliConfLvl), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
{
// Not all drivers support this call - Nick Gorham(unixODBC)
dbInf.cliConfLvl = 0;
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
}
retcode = SQLGetInfo(hdbc, SQL_ODBC_SQL_CONFORMANCE, (UCHAR*) &dbInf.sqlConfLvl, sizeof(dbInf.sqlConfLvl), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_OUTER_JOINS, (UCHAR*) dbInf.outerJoins, 2, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_OUTER_JOINS, (UCHAR*) dbInf.outerJoins, sizeof(dbInf.outerJoins), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_PROCEDURES, (UCHAR*) dbInf.procedureSupport, 2, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_PROCEDURES, (UCHAR*) dbInf.procedureSupport, sizeof(dbInf.procedureSupport), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_ACCESSIBLE_TABLES, (UCHAR*) dbInf.accessibleTables, 2, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_ACCESSIBLE_TABLES, (UCHAR*) dbInf.accessibleTables, sizeof(dbInf.accessibleTables), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_CURSOR_COMMIT_BEHAVIOR, (UCHAR*) &dbInf.cursorCommitBehavior, sizeof(dbInf.cursorCommitBehavior), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_CURSOR_ROLLBACK_BEHAVIOR, (UCHAR*) &dbInf.cursorRollbackBehavior, sizeof(dbInf.cursorRollbackBehavior), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_NON_NULLABLE_COLUMNS, (UCHAR*) &dbInf.supportNotNullClause, sizeof(dbInf.supportNotNullClause), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
- retcode = SQLGetInfo(hdbc, SQL_ODBC_SQL_OPT_IEF, (UCHAR*) dbInf.supportIEF, 2, &cb);
+ retcode = SQLGetInfo(hdbc, SQL_ODBC_SQL_OPT_IEF, (UCHAR*) dbInf.supportIEF, sizeof(dbInf.supportIEF), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_DEFAULT_TXN_ISOLATION, (UCHAR*) &dbInf.txnIsolation, sizeof(dbInf.txnIsolation), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_TXN_ISOLATION_OPTION, (UCHAR*) &dbInf.txnIsolationOptions, sizeof(dbInf.txnIsolationOptions), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_FETCH_DIRECTION, (UCHAR*) &dbInf.fetchDirections, sizeof(dbInf.fetchDirections), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_LOCK_TYPES, (UCHAR*) &dbInf.lockTypes, sizeof(dbInf.lockTypes), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_POS_OPERATIONS, (UCHAR*) &dbInf.posOperations, sizeof(dbInf.posOperations), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_POSITIONED_STATEMENTS, (UCHAR*) &dbInf.posStmts, sizeof(dbInf.posStmts), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_SCROLL_CONCURRENCY, (UCHAR*) &dbInf.scrollConcurrency, sizeof(dbInf.scrollConcurrency), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_SCROLL_OPTIONS, (UCHAR*) &dbInf.scrollOptions, sizeof(dbInf.scrollOptions), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_STATIC_SENSITIVITY, (UCHAR*) &dbInf.staticSensitivity, sizeof(dbInf.staticSensitivity), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_TXN_CAPABLE, (UCHAR*) &dbInf.txnCapable, sizeof(dbInf.txnCapable), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
retcode = SQLGetInfo(hdbc, SQL_LOGIN_TIMEOUT, (UCHAR*) &dbInf.loginTimeout, sizeof(dbInf.loginTimeout), &cb);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
- {
- DispAllErrors(henv, hdbc);
- if (failOnDataTypeUnsupported)
- return FALSE;
- }
+ {
+ DispAllErrors(henv, hdbc);
+ if (failOnDataTypeUnsupported)
+ return false;
+ }
#ifdef DBDEBUG_CONSOLE
cout << wxT("***** DATA SOURCE INFORMATION *****") << endl;
#endif
// Completed Successfully
- return(TRUE);
+ return true;
} // wxDb::getDbInfo()
#endif
DispAllErrors(henv, hdbc, hstmt);
SQLFreeStmt(hstmt, SQL_CLOSE);
- return(FALSE);
+ return false;
}
wxChar typeName[DB_TYPE_NAME_LEN+1];
// Obtain columns from the record
- if (SQLGetData(hstmt, 1, SQL_C_CHAR, (UCHAR*) typeName, DB_TYPE_NAME_LEN, &cbRet) != SQL_SUCCESS)
+ if (SQLGetData(hstmt, 1, SQL_C_WXCHAR, typeName, sizeof(typeName), &cbRet) != SQL_SUCCESS)
return(DispAllErrors(henv, hdbc, hstmt));
structSQLTypeInfo.TypeName = typeName;
return(DispAllErrors(henv, hdbc, hstmt));
// Completed Successfully
- return(TRUE);
+ return true;
} // wxDb::getDataTypeInfo()
wxStrcpy(DBerrorList[i], errorList[i]);
dbmsType = dbmsUNIDENTIFIED;
- dbIsOpen = FALSE;
+ dbIsOpen = false;
} // wxDb::Close()
}
// Completed successfully
- return(TRUE);
+ return true;
} // wxDb::CommitTrans()
return(DispAllErrors(henv, hdbc));
// Completed successfully
- return(TRUE);
+ return true;
} // wxDb::RollbackTrans()
* If in DBDEBUG_CONSOLE mode, the constructed string will be displayed in the console
* window and program execution will be paused until the user presses a key.
*
- * This function always returns a FALSE, so that functions which call this function
+ * This function always returns a false, so that functions which call this function
* can have a line like "return (DispAllErrors(henv, hdbc));" to indicate the failure
* of the users request, so that the calling code can then process the error msg log
*/
{
wxString odbcErrMsg;
- while (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
- {
+#ifdef __VMS
+ while (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (SQLINTEGER *) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
+#else
+ while (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (long*) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
+#endif
+ {
odbcErrMsg.Printf(wxT("SQL State = %s\nNative Error Code = %li\nError Message = %s\n"), sqlState, nativeError, errorMsg);
logError(odbcErrMsg, sqlState);
if (!silent)
}
}
- return(FALSE); // This function always returns FALSE.
+ return false; // This function always returns false.
} // wxDb::DispAllErrors()
/********** wxDb::GetNextError() **********/
bool wxDb::GetNextError(HENV aHenv, HDBC aHdbc, HSTMT aHstmt)
{
- if (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
- return(TRUE);
+#ifdef __VMS
+ if (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (SQLINTEGER *) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
+#else
+ if (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, (long*) &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
+#endif
+ return true;
else
- return(FALSE);
+ return false;
} // wxDb::GetNextError()
// Drop the view first
if (attemptDrop && !DropView(viewName))
- return FALSE;
+ return false;
// Build the create view statement
sqlStmt = wxT("CREATE VIEW ");
bool wxDb::DropView(const wxString &viewName)
{
/*
- * NOTE: This function returns TRUE if the View does not exist, but
+ * NOTE: This function returns true if the View does not exist, but
* only for identified databases. Code will need to be added
* below for any other databases when those databases are defined
* to handle this situation consistently
DispNextError();
DispAllErrors(henv, hdbc, hstmt);
RollbackTrans();
- return(FALSE);
+ return false;
}
}
}
// Commit the transaction
if (!CommitTrans())
- return(FALSE);
+ return false;
- return TRUE;
+ return true;
} // wxDb::DropView()
if (retcode == SQL_SUCCESS ||
(Dbms() == dbmsDB2 && (retcode == SQL_SUCCESS_WITH_INFO || retcode == SQL_NO_DATA_FOUND)))
{
- return(TRUE);
+ return true;
}
else
{
DispAllErrors(henv, hdbc, hstmt);
- return(FALSE);
+ return false;
}
} // wxDb::ExecSql()
+/********** wxDb::ExecSql() with column info **********/
+bool wxDb::ExecSql(const wxString &pSqlStmt, wxDbColInf** columns, short& numcols)
+{
+ //execute the statement first
+ if (!ExecSql(pSqlStmt))
+ return false;
+
+ SWORD noCols;
+ if (SQLNumResultCols(hstmt, &noCols) != SQL_SUCCESS)
+ {
+ DispAllErrors(henv, hdbc, hstmt);
+ return false;
+ }
+
+ if (noCols == 0)
+ return false;
+ else
+ numcols = noCols;
+
+ // Get column information
+ short colNum;
+ wxChar name[DB_MAX_COLUMN_NAME_LEN+1];
+ SWORD Sword;
+ SDWORD Sdword;
+ wxDbColInf* pColInf = new wxDbColInf[noCols];
+
+ //fill in column information (name, datatype)
+ for (colNum = 0; colNum < noCols; colNum++)
+ {
+ if (SQLColAttributes(hstmt, (UWORD)(colNum+1), SQL_COLUMN_NAME,
+ name, sizeof(name),
+ &Sword, &Sdword) != SQL_SUCCESS)
+ {
+ DispAllErrors(henv, hdbc, hstmt);
+ delete[] pColInf;
+ return false;
+ }
+
+ wxStrncpy(pColInf[colNum].colName, name, DB_MAX_COLUMN_NAME_LEN);
+
+ if (SQLColAttributes(hstmt, (UWORD)(colNum+1), SQL_COLUMN_TYPE,
+ NULL, 0, &Sword, &Sdword) != SQL_SUCCESS)
+ {
+ DispAllErrors(henv, hdbc, hstmt);
+ delete[] pColInf;
+ return false;
+ }
+
+ switch (Sdword)
+ {
+ case SQL_VARCHAR:
+ case SQL_CHAR:
+ pColInf[colNum].dbDataType = DB_DATA_TYPE_VARCHAR;
+ break;
+ case SQL_TINYINT:
+ case SQL_SMALLINT:
+ case SQL_INTEGER:
+ case SQL_BIT:
+ pColInf[colNum].dbDataType = DB_DATA_TYPE_INTEGER;
+ break;
+ case SQL_DOUBLE:
+ case SQL_DECIMAL:
+ case SQL_NUMERIC:
+ case SQL_FLOAT:
+ case SQL_REAL:
+ pColInf[colNum].dbDataType = DB_DATA_TYPE_FLOAT;
+ break;
+ case SQL_DATE:
+ case SQL_TIMESTAMP:
+ pColInf[colNum].dbDataType = DB_DATA_TYPE_DATE;
+ break;
+ case SQL_BINARY:
+ pColInf[colNum].dbDataType = DB_DATA_TYPE_BLOB;
+ break;
+#ifdef __WXDEBUG__
+ default:
+ wxString errMsg;
+ errMsg.Printf(wxT("SQL Data type %ld currently not supported by wxWidgets"), (long)Sdword);
+ wxLogDebug(errMsg,wxT("ODBC DEBUG MESSAGE"));
+#endif
+ }
+ }
+
+ *columns = pColInf;
+ return true;
+} // wxDb::ExecSql()
+
/********** wxDb::GetNext() **********/
bool wxDb::GetNext(void)
{
if (SQLFetch(hstmt) == SQL_SUCCESS)
- return(TRUE);
+ return true;
else
{
DispAllErrors(henv, hdbc, hstmt);
- return(FALSE);
+ return false;
}
} // wxDb::GetNext()
wxASSERT(pData);
wxASSERT(cbReturned);
- if (SQLGetData(hstmt, colNo, cType, pData, maxLen, cbReturned) == SQL_SUCCESS)
- return(TRUE);
+ long bufferSize = maxLen;
+
+ if (cType == SQL_C_WXCHAR)
+ bufferSize = maxLen * sizeof(wxChar);
+
+ if (SQLGetData(hstmt, colNo, cType, pData, bufferSize, cbReturned) == SQL_SUCCESS)
+ return true;
else
{
DispAllErrors(henv, hdbc, hstmt);
- return(FALSE);
+ return false;
}
} // wxDb::GetData()
{
wxChar szPkTable[DB_MAX_TABLE_NAME_LEN+1]; /* Primary key table name */
wxChar szFkTable[DB_MAX_TABLE_NAME_LEN+1]; /* Foreign key table name */
- short iKeySeq;
+ SWORD iKeySeq;
// SQLSMALLINT iKeySeq;
wxChar szPkCol[DB_MAX_COLUMN_NAME_LEN+1]; /* Primary key column */
wxChar szFkCol[DB_MAX_COLUMN_NAME_LEN+1]; /* Foreign key column */
retcode = SQLFetch(hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
- GetData( 4, SQL_C_CHAR, szPkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
+ GetData( 4, SQL_C_WXCHAR, szPkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
GetData( 5, SQL_C_SSHORT, &iKeySeq, 0, &cb);
//-------
for (i=0;i<noCols;i++) // Find the Column name
retcode = SQLFetch(hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
- GetData( 3, SQL_C_CHAR, szPkTable, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData( 4, SQL_C_CHAR, szPkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
- GetData( 5, SQL_C_SSHORT, &iKeySeq, 0, &cb);
- GetData( 7, SQL_C_CHAR, szFkTable, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData( 8, SQL_C_CHAR, szFkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
+ GetData( 3, SQL_C_WXCHAR, szPkTable, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData( 4, SQL_C_WXCHAR, szPkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
+ GetData( 5, SQL_C_SSHORT, &iKeySeq, 0, &cb);
+ GetData( 7, SQL_C_WXCHAR, szFkTable, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData( 8, SQL_C_WXCHAR, szFkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
tempStr.Printf(wxT("%s[%s] "),tempStr.c_str(),szFkTable); // [ ] in case there is a blank in the Table name
} // if
} // while
tempStr.Trim(); // Get rid of any unneeded blanks
- if (!tempStr.IsEmpty())
+ if (!tempStr.empty())
{
for (i=0; i<noCols; i++)
{ // Find the Column name
retcode = SQLFetch(hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
- GetData( 3, SQL_C_CHAR, szPkTable, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData( 5, SQL_C_SSHORT, &iKeySeq, 0, &cb);
- GetData( 8, SQL_C_CHAR, szFkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
+ GetData( 3, SQL_C_WXCHAR, szPkTable, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData( 5, SQL_C_SSHORT, &iKeySeq, 0, &cb);
+ GetData( 8, SQL_C_WXCHAR, szFkCol, DB_MAX_COLUMN_NAME_LEN+1, &cb);
//-------
for (i=0; i<noCols; i++) // Find the Column name
{
// MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
// use the call below that leaves out the user name
- if (!UserID.IsEmpty() &&
+ if (!UserID.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsMS_SQL_SERVER)
if (colNo < noCols) // Some extra error checking to prevent memory overwrites
{
// NOTE: Only the ODBC 1.x fields are retrieved
- GetData( 1, SQL_C_CHAR, (UCHAR*) colInf[colNo].catalog, 128+1, &cb);
- GetData( 2, SQL_C_CHAR, (UCHAR*) colInf[colNo].schema, 128+1, &cb);
- GetData( 3, SQL_C_CHAR, (UCHAR*) colInf[colNo].tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData( 4, SQL_C_CHAR, (UCHAR*) colInf[colNo].colName, DB_MAX_COLUMN_NAME_LEN+1, &cb);
+ GetData( 1, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].catalog, 128+1, &cb);
+ GetData( 2, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].schema, 128+1, &cb);
+ GetData( 3, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData( 4, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].colName, DB_MAX_COLUMN_NAME_LEN+1, &cb);
GetData( 5, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].sqlDataType, 0, &cb);
- GetData( 6, SQL_C_CHAR, (UCHAR*) colInf[colNo].typeName, 128+1, &cb);
- GetData( 7, SQL_C_SLONG, (UCHAR*) &colInf[colNo].columnSize, 0, &cb);
- GetData( 8, SQL_C_SLONG, (UCHAR*) &colInf[colNo].bufferLength, 0, &cb);
+ GetData( 6, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].typeName, 128+1, &cb);
+ GetData( 7, SQL_C_SLONG, (UCHAR*) &colInf[colNo].columnLength, 0, &cb);
+ GetData( 8, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].bufferSize, 0, &cb);
GetData( 9, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].decimalDigits,0, &cb);
GetData(10, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].numPrecRadix, 0, &cb);
GetData(11, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].nullable, 0, &cb);
- GetData(12, SQL_C_CHAR, (UCHAR*) colInf[colNo].remarks, 254+1, &cb);
+ GetData(12, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].remarks, 254+1, &cb);
// Determine the wxDb data type that is used to represent the native data type of this data source
colInf[colNo].dbDataType = 0;
if (!wxStricmp(typeInfVarchar.TypeName,colInf[colNo].typeName))
{
#ifdef _IODBC_
- // IODBC does not return a correct columnSize, so we set
- // columnSize = bufferLength if no column size was returned
- // IODBC returns the columnSize in bufferLength.. (bug)
- if (colInf[colNo].columnSize < 1)
+ // IODBC does not return a correct columnLength, so we set
+ // columnLength = bufferSize if no column length was returned
+ // IODBC returns the columnLength in bufferSize. (bug)
+ if (colInf[colNo].columnLength < 1)
{
- colInf[colNo].columnSize = colInf[colNo].bufferLength;
+ colInf[colNo].columnLength = colInf[colNo].bufferSize;
}
#endif
colInf[colNo].dbDataType = DB_DATA_TYPE_VARCHAR;
// MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
// use the call below that leaves out the user name
- if (!UserID.IsEmpty() &&
+ if (!UserID.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsMS_SQL_SERVER)
if (colNo < noCols) // Some extra error checking to prevent memory overwrites
{
// NOTE: Only the ODBC 1.x fields are retrieved
- GetData( 1, SQL_C_CHAR, (UCHAR*) colInf[colNo].catalog, 128+1, &cb);
- GetData( 2, SQL_C_CHAR, (UCHAR*) colInf[colNo].schema, 128+1, &cb);
- GetData( 3, SQL_C_CHAR, (UCHAR*) colInf[colNo].tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData( 4, SQL_C_CHAR, (UCHAR*) colInf[colNo].colName, DB_MAX_COLUMN_NAME_LEN+1, &cb);
- GetData( 5, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].sqlDataType, 0, &cb);
- GetData( 6, SQL_C_CHAR, (UCHAR*) colInf[colNo].typeName, 128+1, &cb);
- GetData( 7, SQL_C_SLONG, (UCHAR*) &colInf[colNo].columnSize, 0, &cb);
+ GetData( 1, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].catalog, 128+1, &cb);
+ GetData( 2, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].schema, 128+1, &cb);
+ GetData( 3, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData( 4, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].colName, DB_MAX_COLUMN_NAME_LEN+1, &cb);
+ GetData( 5, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].sqlDataType, 0, &cb);
+ GetData( 6, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].typeName, 128+1, &cb);
+ GetData( 7, SQL_C_SLONG, (UCHAR*) &colInf[colNo].columnLength, 0, &cb);
// BJO 991214 : SQL_C_SSHORT instead of SQL_C_SLONG, otherwise fails on Sparc (probably all 64 bit architectures)
- GetData( 8, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].bufferLength, 0, &cb);
- GetData( 9, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].decimalDigits,0, &cb);
- GetData(10, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].numPrecRadix, 0, &cb);
- GetData(11, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].nullable, 0, &cb);
- GetData(12, SQL_C_CHAR, (UCHAR*) colInf[colNo].remarks, 254+1, &cb);
+ GetData( 8, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].bufferSize, 0, &cb);
+ GetData( 9, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].decimalDigits,0, &cb);
+ GetData(10, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].numPrecRadix, 0, &cb);
+ GetData(11, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].nullable, 0, &cb);
+ GetData(12, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].remarks, 254+1, &cb);
// Start Values for Primary/Foriegn Key (=No)
colInf[colNo].PkCol = 0; // Primary key column 0=No; 1= First Key, 2 = Second Key etc.
colInf[colNo].PkTableName[0] = 0; // Tablenames where Primary Key is used as a Foreign Key
if (!wxStricmp(typeInfVarchar.TypeName, colInf[colNo].typeName))
{
#ifdef _IODBC_
- // IODBC does not return a correct columnSize, so we set
- // columnSize = bufferLength if no column size was returned
- // IODBC returns the columnSize in bufferLength.. (bug)
- if (colInf[colNo].columnSize < 1)
+ // IODBC does not return a correct columnLength, so we set
+ // columnLength = bufferSize if no column length was returned
+ // IODBC returns the columnLength in bufferSize. (bug)
+ if (colInf[colNo].columnLength < 1)
{
- colInf[colNo].columnSize = colInf[colNo].bufferLength;
+ colInf[colNo].columnLength = colInf[colNo].bufferSize;
}
#endif
// MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
// use the call below that leaves out the user name
- if (!UserID.IsEmpty() &&
+ if (!UserID.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsMS_SQL_SERVER)
if (colNo < noCols) // Some extra error checking to prevent memory overwrites
{
// NOTE: Only the ODBC 1.x fields are retrieved
- GetData( 1, SQL_C_CHAR, (UCHAR*) colInf[colNo].catalog, 128+1, &cb);
- GetData( 2, SQL_C_CHAR, (UCHAR*) colInf[colNo].schema, 128+1, &cb);
- GetData( 3, SQL_C_CHAR, (UCHAR*) colInf[colNo].tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData( 4, SQL_C_CHAR, (UCHAR*) colInf[colNo].colName, DB_MAX_COLUMN_NAME_LEN+1, &cb);
- GetData( 5, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].sqlDataType, 0, &cb);
- GetData( 6, SQL_C_CHAR, (UCHAR*) colInf[colNo].typeName, 128+1, &cb);
- GetData( 7, SQL_C_SLONG, (UCHAR*) &colInf[colNo].columnSize, 0, &cb);
- GetData( 8, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].bufferLength, 0, &cb);
- GetData( 9, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].decimalDigits,0, &cb);
- GetData(10, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].numPrecRadix, 0, &cb);
- GetData(11, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].nullable, 0, &cb);
- GetData(12, SQL_C_CHAR, (UCHAR*) colInf[colNo].remarks, 254+1, &cb);
+ GetData( 1, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].catalog, 128+1, &cb);
+ GetData( 2, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].schema, 128+1, &cb);
+ GetData( 3, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData( 4, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].colName, DB_MAX_COLUMN_NAME_LEN+1, &cb);
+ GetData( 5, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].sqlDataType, 0, &cb);
+ GetData( 6, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].typeName, 128+1, &cb);
+ GetData( 7, SQL_C_SLONG, (UCHAR*) &colInf[colNo].columnLength, 0, &cb);
+ GetData( 8, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].bufferSize, 0, &cb);
+ GetData( 9, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].decimalDigits,0, &cb);
+ GetData(10, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].numPrecRadix, 0, &cb);
+ GetData(11, SQL_C_SSHORT, (UCHAR*) &colInf[colNo].nullable, 0, &cb);
+ GetData(12, SQL_C_WXCHAR, (UCHAR*) colInf[colNo].remarks, 254+1, &cb);
// Start Values for Primary/Foriegn Key (=No)
colInf[colNo].PkCol = 0; // Primary key column 0=No; 1= First Key, 2 = Second Key etc.
colInf[colNo].PkTableName[0] = 0; // Tablenames where Primary Key is used as a Foreign Key
colInf[colNo].FkTableName[0] = 0; // Foreign key table name
#ifdef _IODBC_
- // IODBC does not return a correct columnSize, so we set
- // columnSize = bufferLength if no column size was returned
- // IODBC returns the columnSize in bufferLength.. (bug)
- if (colInf[colNo].columnSize < 1)
+ // IODBC does not return a correct columnLength, so we set
+ // columnLength = bufferSize if no column length was returned
+ // IODBC returns the columnLength in bufferSize. (bug)
+ if (colInf[colNo].columnLength < 1)
{
- colInf[colNo].columnSize = colInf[colNo].bufferLength;
+ colInf[colNo].columnLength = colInf[colNo].bufferSize;
}
#endif
case SQL_CHAR:
colInf[colNo].dbDataType = DB_DATA_TYPE_VARCHAR;
break;
-
case SQL_TINYINT:
case SQL_SMALLINT:
case SQL_INTEGER:
+ case SQL_BIT:
colInf[colNo].dbDataType = DB_DATA_TYPE_INTEGER;
break;
case SQL_DOUBLE:
colInf[colNo].dbDataType = DB_DATA_TYPE_FLOAT;
break;
case SQL_DATE:
+ case SQL_TIMESTAMP:
colInf[colNo].dbDataType = DB_DATA_TYPE_DATE;
break;
case SQL_BINARY:
// MySQL, SQLServer, and Access cannot accept a user name when looking up column names, so we
// use the call below that leaves out the user name
- if (!UserID.IsEmpty() &&
+ if (!UserID.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsMS_SQL_SERVER)
SQLFreeStmt(hstmt, SQL_CLOSE); // Close if Open
tblNameSave.Empty();
- if (!UserID.IsEmpty() &&
+ if (!UserID.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsMS_SQL_SERVER)
{
if (pDbInf->numTables == 0)
{
- GetData( 1, SQL_C_CHAR, (UCHAR*) pDbInf->catalog, 128+1, &cb);
- GetData( 2, SQL_C_CHAR, (UCHAR*) pDbInf->schema, 128+1, &cb);
+ GetData( 1, SQL_C_WXCHAR, (UCHAR*) pDbInf->catalog, 128+1, &cb);
+ GetData( 2, SQL_C_WXCHAR, (UCHAR*) pDbInf->schema, 128+1, &cb);
}
pDbInf->numTables++; // Counter for Tables
} // if (pass == 1)
noTab = 0;
} // if (pDbInf->pTableInf == NULL) // Has the Table Array been created
- GetData( 3, SQL_C_CHAR, (UCHAR*) (pDbInf->pTableInf+noTab)->tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData( 4, SQL_C_CHAR, (UCHAR*) (pDbInf->pTableInf+noTab)->tableType, 30+1, &cb);
- GetData( 5, SQL_C_CHAR, (UCHAR*) (pDbInf->pTableInf+noTab)->tableRemarks, 254+1, &cb);
+ GetData( 3, SQL_C_WXCHAR, (UCHAR*) (pDbInf->pTableInf+noTab)->tableName, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData( 4, SQL_C_WXCHAR, (UCHAR*) (pDbInf->pTableInf+noTab)->tableType, 30+1, &cb);
+ GetData( 5, SQL_C_WXCHAR, (UCHAR*) (pDbInf->pTableInf+noTab)->tableRemarks, 254+1, &cb);
noTab++;
} // if
// Query how many columns are in each table
for (noTab=0;noTab<pDbInf->numTables;noTab++)
{
- (pDbInf->pTableInf+noTab)->numCols = GetColumnCount((pDbInf->pTableInf+noTab)->tableName,UserID);
+ (pDbInf->pTableInf+noTab)->numCols = (UWORD)GetColumnCount((pDbInf->pTableInf+noTab)->tableName,UserID);
}
return pDbInf;
FILE *fp = wxFopen(fileName.c_str(),wxT("wt"));
if (fp == NULL)
- return(FALSE);
+ return false;
SQLFreeStmt(hstmt, SQL_CLOSE);
wxString UserID;
convertUserID(userID,UserID);
- if (!UserID.IsEmpty() &&
+ if (!UserID.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsINTERBASE &&
{
DispAllErrors(henv, hdbc, hstmt);
fclose(fp);
- return(FALSE);
+ return false;
}
wxString outStr;
tblNameSave.Empty();
int cnt = 0;
- while (TRUE)
+ while (true)
{
retcode = SQLFetch(hstmt);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
break;
- GetData(3,SQL_C_CHAR, (UCHAR *) tblName, DB_MAX_TABLE_NAME_LEN+1, &cb);
- GetData(4,SQL_C_CHAR, (UCHAR *) colName, DB_MAX_COLUMN_NAME_LEN+1,&cb);
- GetData(5,SQL_C_SSHORT,(UCHAR *)&sqlDataType, 0, &cb);
- GetData(6,SQL_C_CHAR, (UCHAR *) typeName, sizeof(typeName), &cb);
- GetData(7,SQL_C_SLONG, (UCHAR *)&precision, 0, &cb);
- GetData(8,SQL_C_SLONG, (UCHAR *)&length, 0, &cb);
+ GetData(3,SQL_C_WXCHAR, (UCHAR *) tblName, DB_MAX_TABLE_NAME_LEN+1, &cb);
+ GetData(4,SQL_C_WXCHAR, (UCHAR *) colName, DB_MAX_COLUMN_NAME_LEN+1,&cb);
+ GetData(5,SQL_C_SSHORT, (UCHAR *)&sqlDataType, 0, &cb);
+ GetData(6,SQL_C_WXCHAR, (UCHAR *) typeName, sizeof(typeName), &cb);
+ GetData(7,SQL_C_SLONG, (UCHAR *)&precision, 0, &cb);
+ GetData(8,SQL_C_SLONG, (UCHAR *)&length, 0, &cb);
if (wxStrcmp(tblName, tblNameSave.c_str()))
{
{
SQLFreeStmt(hstmt, SQL_CLOSE);
fclose(fp);
- return(FALSE);
+ return false;
}
cnt++;
}
bool wxDb::TableExists(const wxString &tableName, const wxChar *userID, const wxString &tablePath)
/*
- * Table name can refer to a table, view, alias or synonym. Returns TRUE
+ * Table name can refer to a table, view, alias or synonym. Returns true
* if the object exists in the database. This function does not indicate
* whether or not the user has privleges to query or perform other functions
* on the table.
// Some databases cannot accept a user name when looking up table names,
// so we use the call below that leaves out the user name
- if (!UserID.IsEmpty() &&
+ if (!UserID.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsMS_SQL_SERVER &&
SQLFreeStmt(hstmt, SQL_CLOSE);
- return(TRUE);
+ return true;
} // wxDb::TableExists()
// Some databases cannot accept a user name when looking up table names,
// so we use the call below that leaves out the user name
- if (!Schema.IsEmpty() &&
+ if (!Schema.empty() &&
Dbms() != dbmsMY_SQL &&
Dbms() != dbmsACCESS &&
Dbms() != dbmsMS_SQL_SERVER)
#endif
if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
- return(DispAllErrors(henv, hdbc, hstmt));
+ return (DispAllErrors(henv, hdbc, hstmt));
- bool failed = FALSE;
+ bool failed = false;
retcode = SQLFetch(hstmt);
while (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
- if (SQLGetData(hstmt, 1, SQL_C_CHAR, (UCHAR*) result.tableQual, sizeof(result.tableQual), &cbRetVal) != SQL_SUCCESS)
- failed = TRUE;
+ if (SQLGetData(hstmt, 1, SQL_C_WXCHAR, (UCHAR*) result.tableQual, sizeof(result.tableQual), &cbRetVal) != SQL_SUCCESS)
+ failed = true;
- if (!failed && SQLGetData(hstmt, 2, SQL_C_CHAR, (UCHAR*) result.tableOwner, sizeof(result.tableOwner), &cbRetVal) != SQL_SUCCESS)
- failed = TRUE;
+ if (!failed && SQLGetData(hstmt, 2, SQL_C_WXCHAR, (UCHAR*) result.tableOwner, sizeof(result.tableOwner), &cbRetVal) != SQL_SUCCESS)
+ failed = true;
- if (!failed && SQLGetData(hstmt, 3, SQL_C_CHAR, (UCHAR*) result.tableName, sizeof(result.tableName), &cbRetVal) != SQL_SUCCESS)
- failed = TRUE;
+ if (!failed && SQLGetData(hstmt, 3, SQL_C_WXCHAR, (UCHAR*) result.tableName, sizeof(result.tableName), &cbRetVal) != SQL_SUCCESS)
+ failed = true;
- if (!failed && SQLGetData(hstmt, 4, SQL_C_CHAR, (UCHAR*) result.grantor, sizeof(result.grantor), &cbRetVal) != SQL_SUCCESS)
- failed = TRUE;
+ if (!failed && SQLGetData(hstmt, 4, SQL_C_WXCHAR, (UCHAR*) result.grantor, sizeof(result.grantor), &cbRetVal) != SQL_SUCCESS)
+ failed = true;
- if (!failed && SQLGetData(hstmt, 5, SQL_C_CHAR, (UCHAR*) result.grantee, sizeof(result.grantee), &cbRetVal) != SQL_SUCCESS)
- failed = TRUE;
+ if (!failed && SQLGetData(hstmt, 5, SQL_C_WXCHAR, (UCHAR*) result.grantee, sizeof(result.grantee), &cbRetVal) != SQL_SUCCESS)
+ failed = true;
- if (!failed && SQLGetData(hstmt, 6, SQL_C_CHAR, (UCHAR*) result.privilege, sizeof(result.privilege), &cbRetVal) != SQL_SUCCESS)
- failed = TRUE;
+ if (!failed && SQLGetData(hstmt, 6, SQL_C_WXCHAR, (UCHAR*) result.privilege, sizeof(result.privilege), &cbRetVal) != SQL_SUCCESS)
+ failed = true;
- if (!failed && SQLGetData(hstmt, 7, SQL_C_CHAR, (UCHAR*) result.grantable, sizeof(result.grantable), &cbRetVal) != SQL_SUCCESS)
- failed = TRUE;
+ if (!failed && SQLGetData(hstmt, 7, SQL_C_WXCHAR, (UCHAR*) result.grantable, sizeof(result.grantable), &cbRetVal) != SQL_SUCCESS)
+ failed = true;
if (failed)
{
result.grantor, result.grantee);
#endif
- if (UserID.IsSameAs(result.tableOwner,FALSE))
+ if (UserID.IsSameAs(result.tableOwner,false))
{
SQLFreeStmt(hstmt, SQL_CLOSE);
- return TRUE;
+ return true;
}
- if (UserID.IsSameAs(result.grantee,FALSE) &&
+ if (UserID.IsSameAs(result.grantee,false) &&
!wxStrcmp(result.privilege,priv))
{
SQLFreeStmt(hstmt, SQL_CLOSE);
- return TRUE;
+ return true;
}
if (!wxStrcmp(result.grantee,curRole) &&
!wxStrcmp(result.privilege,priv))
{
SQLFreeStmt(hstmt, SQL_CLOSE);
- return TRUE;
+ return true;
}
retcode = SQLFetch(hstmt);
}
SQLFreeStmt(hstmt, SQL_CLOSE);
- return FALSE;
+ return false;
} // wxDb::TablePrivileges
{
fpSqlLog = wxFopen(filename, (append ? wxT("at") : wxT("wt")));
if (fpSqlLog == NULL)
- return(FALSE);
+ return false;
}
}
else // sqlLogOFF
if (fpSqlLog)
{
if (fclose(fpSqlLog))
- return(FALSE);
+ return false;
fpSqlLog = 0;
}
}
sqlLogState = state;
- return(TRUE);
+ return true;
} // wxDb::SetSqlLogging()
wxASSERT(logMsg.Length());
if (fpSqlLog == 0 || sqlLogState == sqlLogOFF)
- return(FALSE);
+ return false;
if (wxFputs(wxT("\n"), fpSqlLog) == EOF)
- return(FALSE);
+ return false;
if (wxFputs(logMsg, fpSqlLog) == EOF)
- return(FALSE);
+ return false;
if (wxFputs(wxT("\n"), fpSqlLog) == EOF)
- return(FALSE);
+ return false;
- return(TRUE);
+ return true;
} // wxDb::WriteSqlLog()
* - Does not support the SQL_TIMESTAMP structure
* - Supports only one cursor and one connect (apparently? with Microsoft driver only?)
* - Does not automatically create the primary index if the 'keyField' param of SetColDef
- * is TRUE. The user must create ALL indexes from their program.
+ * is true. The user must create ALL indexes from their program.
* - Table names can only be 8 characters long
* - Column names can only be 10 characters long
*
// Must specify a columnLength if modifying a VARCHAR type column
if (dataType == DB_DATA_TYPE_VARCHAR && !columnLength)
- return FALSE;
+ return false;
wxString dataTypeName;
wxString sqlStmt;
dataTypeName = typeInfBlob.TypeName;
break;
default:
- return FALSE;
+ return false;
}
// Set the modify or alter syntax depending on the type of database connected to
alterSlashModify = _T("ALTER COLUMN");
break;
case dbmsUNIDENTIFIED :
- return FALSE;
+ return false;
case dbmsSYBASE_ASA :
case dbmsSYBASE_ASE :
case dbmsMY_SQL :
{
if (pDbConfig->UseConnectionStr())
{
- if (pList->PtrDb->OpenedWithConnectionString() &&
+ if (pList->PtrDb->OpenedWithConnectionString() &&
(!wxStrcmp(pDbConfig->GetConnectionStr(), pList->ConnectionStr)))
{
// Found a free connection
- pList->Free = FALSE;
+ pList->Free = false;
return(pList->PtrDb);
}
}
(!wxStrcmp(pDbConfig->GetDsn(), pList->Dsn)))
{
// Found a free connection
- pList->Free = FALSE;
+ pList->Free = false;
return(pList->PtrDb);
}
}
// Initialize new node in the linked list
pList->PtrNext = 0;
- pList->Free = FALSE;
+ pList->Free = false;
pList->Dsn = pDbConfig->GetDsn();
pList->Uid = pDbConfig->GetUserID();
pList->AuthStr = pDbConfig->GetPassword();
// Connect to the datasource
if (opened)
{
- pList->PtrDb->setCached(TRUE); // Prevent a user from deleting a cached connection
- pList->PtrDb->SetSqlLogging(SQLLOGstate, SQLLOGfn, TRUE);
+ pList->PtrDb->setCached(true); // Prevent a user from deleting a cached connection
+ pList->PtrDb->SetSqlLogging(SQLLOGstate, SQLLOGfn, true);
return(pList->PtrDb);
}
else // Unable to connect, destroy list item
for (pList = PtrBegDbList; pList; pList = pList->PtrNext)
{
if (pList->PtrDb == pDb) // Found it, now free it!!!
- return (pList->Free = TRUE);
+ return (pList->Free = true);
}
// Never found the database object, return failure
- return(FALSE);
+ return false;
} // wxDbFreeConnection()
pNext = pList->PtrNext; // Save the pointer to next
pList->PtrDb->CommitTrans(); // Commit any open transactions on wxDb object
pList->PtrDb->Close(); // Close the wxDb object
- pList->PtrDb->setCached(FALSE); // Allows deletion of the wxDb instance
+ pList->PtrDb->setCached(false); // Allows deletion of the wxDb instance
delete pList->PtrDb; // Deletes the wxDb object
delete pList; // Deletes the linked list object
}
// Scan the linked list counting db connections that are currently in use
for (pList = PtrBegDbList; pList; pList = pList->PtrNext)
{
- if (pList->Free == FALSE)
+ if (pList->Free == false)
cnt++;
}
/********** wxDbSqlLog() **********/
bool wxDbSqlLog(wxDbSqlLogState state, const wxChar *filename)
{
- bool append = FALSE;
+ bool append = false;
wxDbList *pList;
for (pList = PtrBegDbList; pList; pList = pList->PtrNext)
{
if (!pList->PtrDb->SetSqlLogging(state,filename,append))
- return(FALSE);
- append = TRUE;
+ return false;
+ append = true;
}
SQLLOGstate = state;
SQLLOGfn = filename;
- return(TRUE);
+ return true;
} // wxDbSqlLog()
int k;
do
{
- k = setupStr.Find((wxChar)2,TRUE);
+ k = setupStr.Find((wxChar)2,true);
if (k != wxNOT_FOUND)
setupStr[(UINT)k] = wxT('\0');
}
/********** wxDbGetDataSource() **********/
-bool wxDbGetDataSource(HENV henv, wxChar *Dsn, SWORD DsnMax, wxChar *DsDesc,
- SWORD DsDescMax, UWORD direction)
+bool wxDbGetDataSource(HENV henv, wxChar *Dsn, SWORD DsnMaxLength, wxChar *DsDesc,
+ SWORD DsDescMaxLength, UWORD direction)
/*
* Dsn and DsDesc will contain the data source name and data source
* description upon return
*/
{
SWORD cb1,cb2;
+ SWORD lengthDsn = (SWORD)(DsnMaxLength*sizeof(wxChar));
+ SWORD lengthDsDesc = (SWORD)(DsDescMaxLength*sizeof(wxChar));
- if (SQLDataSources(henv, direction, (SQLTCHAR FAR *) Dsn, DsnMax, &cb1,
- (SQLTCHAR FAR *) DsDesc, DsDescMax, &cb2) == SQL_SUCCESS)
- return(TRUE);
+ if (SQLDataSources(henv, direction, (SQLTCHAR FAR *) Dsn, lengthDsn, &cb1,
+ (SQLTCHAR FAR *) DsDesc, lengthDsDesc, &cb2) == SQL_SUCCESS)
+ return true;
else
- return(FALSE);
+ return false;
} // wxDbGetDataSource()