// SYNOPSIS START
// SYNOPSIS STOP
*/
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "db.h"
#endif
#include "wx/object.h"
#include "wx/list.h"
#include "wx/utils.h"
- #if wxUSE_GUI
- #include "wx/msgdlg.h"
- #endif
#include "wx/log.h"
#endif
#include "wx/filefn.h"
#include "wx/db.h"
-WXDLLEXPORT_DATA(wxDbList*) PtrBegDbList = 0;
+// DLL options compatibility check:
+#include "wx/app.h"
+WX_CHECK_BUILD_OPTIONS("wxODBC")
+WXDLLIMPEXP_DATA_ODBC(wxDbList*) PtrBegDbList = 0;
wxChar const *SQL_LOG_FILENAME = wxT("sqllog.txt");
wxChar const *SQL_CATALOG_FILENAME = wxT("catalog.txt");
}
// Connect to the data source
- retcode = SQLConnect(hdbc, (UCHAR FAR *) dsn.c_str(), SQL_NTS,
- (UCHAR FAR *) uid.c_str(), SQL_NTS,
- (UCHAR FAR *) authStr.c_str(), SQL_NTS);
+ retcode = SQLConnect(hdbc, (SQLTCHAR FAR *) dsn.c_str(), SQL_NTS,
+ (SQLTCHAR FAR *) uid.c_str(), SQL_NTS,
+ (SQLTCHAR FAR *) authStr.c_str(), SQL_NTS);
if ((retcode != SQL_SUCCESS) &&
(retcode != SQL_SUCCESS_WITH_INFO))
}
// Connect to the data source
- retcode = SQLConnect(hdbc, (UCHAR FAR *) dsn.c_str(), SQL_NTS,
- (UCHAR FAR *) uid.c_str(), SQL_NTS,
- (UCHAR FAR *) authStr.c_str(), SQL_NTS);
+ retcode = SQLConnect(hdbc, (SQLTCHAR FAR *) dsn.c_str(), SQL_NTS,
+ (SQLTCHAR FAR *) uid.c_str(), SQL_NTS,
+ (SQLTCHAR FAR *) authStr.c_str(), SQL_NTS);
if (retcode == SQL_ERROR)
return(DispAllErrors(henv, hdbc));
#ifdef __WXDEBUG__
wxTablesInUse *tiu;
wxNode *pNode;
- pNode = TablesInUse.First();
+ pNode = TablesInUse.GetFirst();
wxString s,s2;
while (pNode)
{
- tiu = (wxTablesInUse *)pNode->Data();
+ tiu = (wxTablesInUse *)pNode->GetData();
if (tiu->pDb == this)
{
s.Printf(wxT("(%-20s) tableID:[%6lu] pDb:[%p]"), tiu->tableName,tiu->tableID,tiu->pDb);
s2.Printf(wxT("Orphaned found using pDb:[%p]"),this);
wxLogDebug (s.c_str(),s2.c_str());
}
- pNode = pNode->Next();
+ pNode = pNode->GetNext();
}
#endif
{
wxString odbcErrMsg;
- while (SQLError(aHenv, aHdbc, aHstmt, (UCHAR FAR *) sqlState, &nativeError, (UCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
+ while (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
{
odbcErrMsg.Printf(wxT("SQL State = %s\nNative Error Code = %li\nError Message = %s\n"), sqlState, nativeError, errorMsg);
logError(odbcErrMsg, sqlState);
/********** wxDb::GetNextError() **********/
bool wxDb::GetNextError(HENV aHenv, HDBC aHdbc, HSTMT aHstmt)
{
- if (SQLError(aHenv, aHdbc, aHstmt, (UCHAR FAR *) sqlState, &nativeError, (UCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
+ if (SQLError(aHenv, aHdbc, aHstmt, (SQLTCHAR FAR *) sqlState, &nativeError, (SQLTCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS)
return(TRUE);
else
return(FALSE);
cout << endl << sqlStmt.c_str() << endl;
#endif
- if (SQLExecDirect(hstmt, (UCHAR FAR *) sqlStmt.c_str(), SQL_NTS) != SQL_SUCCESS)
+ if (SQLExecDirect(hstmt, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS) != SQL_SUCCESS)
{
// Check for "Base table not found" error and ignore
GetNextError(henv, hdbc, hstmt);
SQLFreeStmt(hstmt, SQL_CLOSE);
- retcode = SQLExecDirect(hstmt, (UCHAR FAR *) pSqlStmt.c_str(), SQL_NTS);
+ retcode = SQLExecDirect(hstmt, (SQLTCHAR FAR *) pSqlStmt.c_str(), SQL_NTS);
if (retcode == SQL_SUCCESS ||
(Dbms() == dbmsDB2 && (retcode == SQL_SUCCESS_WITH_INFO || retcode == SQL_NO_DATA_FOUND)))
{
retcode = SQLPrimaryKeys(hstmt,
NULL, 0, /* Catalog name */
NULL, 0, /* Schema name */
- (UCHAR FAR *) tableName.c_str(), SQL_NTS); /* Table name */
+ (SQLTCHAR FAR *) tableName.c_str(), SQL_NTS); /* Table name */
/*---------------------------------------------------------------------*/
/* Fetch and display the result set. This will be a list of the */
retcode = SQLForeignKeys(hstmt,
NULL, 0, /* Primary catalog */
NULL, 0, /* Primary schema */
- (UCHAR FAR *)tableName.c_str(), SQL_NTS,/* Primary table */
+ (SQLTCHAR FAR *)tableName.c_str(), SQL_NTS,/* Primary table */
NULL, 0, /* Foreign catalog */
NULL, 0, /* Foreign schema */
NULL, 0); /* Foreign table */
NULL, 0, /* Primary table */
NULL, 0, /* Foreign catalog */
NULL, 0, /* Foreign schema */
- (UCHAR *)tableName.c_str(), SQL_NTS);/* Foreign table */
+ (SQLTCHAR *)tableName.c_str(), SQL_NTS);/* Foreign table */
/*---------------------------------------------------------------------*/
/* Fetch and display the result set. This will be all of the */
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
- (UCHAR *) UserID.c_str(), SQL_NTS, // Owner
- (UCHAR *) TableName.c_str(), SQL_NTS,
+ (SQLTCHAR *) UserID.c_str(), SQL_NTS, // Owner
+ (SQLTCHAR *) TableName.c_str(), SQL_NTS,
NULL, 0); // All columns
}
else
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // Owner
- (UCHAR *) TableName.c_str(), SQL_NTS,
+ (SQLTCHAR *) TableName.c_str(), SQL_NTS,
NULL, 0); // All columns
}
if (retcode != SQL_SUCCESS)
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
- (UCHAR *) UserID.c_str(), SQL_NTS, // Owner
- (UCHAR *) TableName.c_str(), SQL_NTS,
+ (SQLTCHAR *) UserID.c_str(), SQL_NTS, // Owner
+ (SQLTCHAR *) TableName.c_str(), SQL_NTS,
NULL, 0); // All columns
}
else
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // Owner
- (UCHAR *) TableName.c_str(), SQL_NTS,
+ (SQLTCHAR *) TableName.c_str(), SQL_NTS,
NULL, 0); // All columns
}
if (retcode != SQL_SUCCESS)
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
- (UCHAR *) UserID.c_str(), SQL_NTS, // Owner
- (UCHAR *) TableName.c_str(), SQL_NTS,
+ (SQLTCHAR *) UserID.c_str(), SQL_NTS, // Owner
+ (SQLTCHAR *) TableName.c_str(), SQL_NTS,
NULL, 0); // All columns
}
else
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // Owner
- (UCHAR *) TableName.c_str(), SQL_NTS,
+ (SQLTCHAR *) TableName.c_str(), SQL_NTS,
NULL, 0); // All columns
}
if (retcode != SQL_SUCCESS)
{
retcode = SQLTables(hstmt,
NULL, 0, // All qualifiers
- (UCHAR *) UserID.c_str(), SQL_NTS, // User specified
+ (SQLTCHAR *) UserID.c_str(), SQL_NTS, // User specified
NULL, 0, // All tables
NULL, 0); // All columns
}
wxChar typeName[30+1];
SDWORD precision, length;
- FILE *fp = fopen(fileName.c_str(),wxT("wt"));
+ FILE *fp = wxFopen(fileName.c_str(),wxT("wt"));
if (fp == NULL)
return(FALSE);
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
- (UCHAR *) UserID.c_str(), SQL_NTS, // User specified
+ (SQLTCHAR *) UserID.c_str(), SQL_NTS, // User specified
NULL, 0, // All tables
NULL, 0); // All columns
}
if (wxStrcmp(tblName, tblNameSave.c_str()))
{
if (cnt)
- fputs(wxT("\n"), fp);
- fputs(wxT("================================ "), fp);
- fputs(wxT("================================ "), fp);
- fputs(wxT("===================== "), fp);
- fputs(wxT("========= "), fp);
- fputs(wxT("=========\n"), fp);
+ wxFputs(wxT("\n"), fp);
+ wxFputs(wxT("================================ "), fp);
+ wxFputs(wxT("================================ "), fp);
+ wxFputs(wxT("===================== "), fp);
+ wxFputs(wxT("========= "), fp);
+ wxFputs(wxT("=========\n"), fp);
outStr.Printf(wxT("%-32s %-32s %-21s %9s %9s\n"),
wxT("TABLE NAME"), wxT("COLUMN NAME"), wxT("DATA TYPE"), wxT("PRECISION"), wxT("LENGTH"));
- fputs(outStr.c_str(), fp);
- fputs(wxT("================================ "), fp);
- fputs(wxT("================================ "), fp);
- fputs(wxT("===================== "), fp);
- fputs(wxT("========= "), fp);
- fputs(wxT("=========\n"), fp);
+ wxFputs(outStr.c_str(), fp);
+ wxFputs(wxT("================================ "), fp);
+ wxFputs(wxT("================================ "), fp);
+ wxFputs(wxT("===================== "), fp);
+ wxFputs(wxT("========= "), fp);
+ wxFputs(wxT("=========\n"), fp);
tblNameSave = tblName;
}
outStr.Printf(wxT("%-32s %-32s (%04d)%-15s %9ld %9ld\n"),
tblName, colName, sqlDataType, typeName, precision, length);
- if (fputs(outStr.c_str(), fp) == EOF)
+ if (wxFputs(outStr.c_str(), fp) == EOF)
{
SQLFreeStmt(hstmt, SQL_CLOSE);
fclose(fp);
{
retcode = SQLTables(hstmt,
NULL, 0, // All qualifiers
- (UCHAR *) UserID.c_str(), SQL_NTS, // Only tables owned by this user
- (UCHAR FAR *)TableName.c_str(), SQL_NTS,
+ (SQLTCHAR *) UserID.c_str(), SQL_NTS, // Only tables owned by this user
+ (SQLTCHAR FAR *)TableName.c_str(), SQL_NTS,
NULL, 0); // All table types
}
else
retcode = SQLTables(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // All owners
- (UCHAR FAR *)TableName.c_str(), SQL_NTS,
+ (SQLTCHAR FAR *)TableName.c_str(), SQL_NTS,
NULL, 0); // All table types
}
if (retcode != SQL_SUCCESS)
/********** wxDb::TablePrivileges() **********/
bool wxDb::TablePrivileges(const wxString &tableName, const wxString &priv, const wxChar *userID,
- const wxChar *schema, const wxString &tablePath)
+ const wxChar *schema, const wxString &WXUNUSED(tablePath))
{
wxASSERT(tableName.Length());
{
retcode = SQLTablePrivileges(hstmt,
NULL, 0, // Catalog
- (UCHAR FAR *)Schema.c_str(), SQL_NTS, // Schema
- (UCHAR FAR *)TableName.c_str(), SQL_NTS);
+ (SQLTCHAR FAR *)Schema.c_str(), SQL_NTS, // Schema
+ (SQLTCHAR FAR *)TableName.c_str(), SQL_NTS);
}
else
{
retcode = SQLTablePrivileges(hstmt,
NULL, 0, // Catalog
NULL, 0, // Schema
- (UCHAR FAR *)TableName.c_str(), SQL_NTS);
+ (SQLTCHAR FAR *)TableName.c_str(), SQL_NTS);
}
#ifdef DBDEBUG_CONSOLE
- fprintf(stderr ,wxT("SQLTablePrivileges() returned %i \n"),retcode);
+ wxFprintf(stderr ,wxT("SQLTablePrivileges() returned %i \n"),retcode);
#endif
if ((retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO))
return(DispAllErrors(henv, hdbc, hstmt));
}
#ifdef DBDEBUG_CONSOLE
- fprintf(stderr,wxT("Scanning %s privilege on table %s.%s granted by %s to %s\n"),
+ wxFprintf(stderr,wxT("Scanning %s privilege on table %s.%s granted by %s to %s\n"),
result.privilege,result.tableOwner,result.tableName,
result.grantor, result.grantee);
#endif
wxString TableName;
if (Dbms() == dbmsACCESS)
- TableName = '"';
+ TableName = _T("\"");
TableName += tableName;
if (Dbms() == dbmsACCESS)
- TableName += '"';
+ TableName += _T("\"");
return TableName;
} // wxDb::SQLTableName()
wxString ColName;
if (Dbms() == dbmsACCESS)
- ColName = '"';
+ ColName = _T("\"");
ColName += colName;
if (Dbms() == dbmsACCESS)
- ColName += '"';
+ ColName += _T("\"");
return ColName;
} // wxDb::SQLColumnName()
{
if (fpSqlLog == 0)
{
- fpSqlLog = fopen(filename, (append ? wxT("at") : wxT("wt")));
+ fpSqlLog = wxFopen(filename, (append ? wxT("at") : wxT("wt")));
if (fpSqlLog == NULL)
return(FALSE);
}
if (fpSqlLog == 0 || sqlLogState == sqlLogOFF)
return(FALSE);
- if (fputs(wxT("\n"), fpSqlLog) == EOF)
+ if (wxFputs(wxT("\n"), fpSqlLog) == EOF)
return(FALSE);
- if (fputs(logMsg, fpSqlLog) == EOF)
+ if (wxFputs(logMsg, fpSqlLog) == EOF)
return(FALSE);
- if (fputs(wxT("\n"), fpSqlLog) == EOF)
+ if (wxFputs(wxT("\n"), fpSqlLog) == EOF)
return(FALSE);
return(TRUE);
switch (Dbms())
{
case dbmsORACLE :
- alterSlashModify = "MODIFY";
+ alterSlashModify = _T("MODIFY");
break;
case dbmsMS_SQL_SERVER :
- alterSlashModify = "ALTER COLUMN";
+ alterSlashModify = _T("ALTER COLUMN");
break;
case dbmsUNIDENTIFIED :
return FALSE;
case dbmsDBASE :
case dbmsXBASE_SEQUITER :
default :
- alterSlashModify = "MODIFY";
+ alterSlashModify = _T("MODIFY");
break;
}
// For varchars only, append the size of the column
if (dataType == DB_DATA_TYPE_VARCHAR &&
- (Dbms() != dbmsMY_SQL || dataTypeName != "text"))
+ (Dbms() != dbmsMY_SQL || dataTypeName != _T("text")))
{
wxString s;
s.Printf(wxT("(%lu)"), columnLength);
/********** wxDbGetConnection() **********/
-wxDb WXDLLEXPORT *wxDbGetConnection(wxDbConnectInf *pDbConfig, bool FwdOnlyCursors)
+wxDb WXDLLIMPEXP_ODBC *wxDbGetConnection(wxDbConnectInf *pDbConfig, bool FwdOnlyCursors)
{
wxDbList *pList;
/********** wxDbFreeConnection() **********/
-bool WXDLLEXPORT wxDbFreeConnection(wxDb *pDb)
+bool WXDLLIMPEXP_ODBC wxDbFreeConnection(wxDb *pDb)
{
wxDbList *pList;
/********** wxDbCloseConnections() **********/
-void WXDLLEXPORT wxDbCloseConnections(void)
+void WXDLLIMPEXP_ODBC wxDbCloseConnections(void)
{
wxDbList *pList, *pNext;
/********** wxDbConnectionsInUse() **********/
-int WXDLLEXPORT wxDbConnectionsInUse(void)
+int WXDLLIMPEXP_ODBC wxDbConnectionsInUse(void)
{
wxDbList *pList;
int cnt = 0;
/********** wxDbLogExtendedErrorMsg() **********/
// DEBUG ONLY function
-const wxChar* WXDLLEXPORT wxDbLogExtendedErrorMsg(const wxChar *userText,
+const wxChar* WXDLLIMPEXP_ODBC wxDbLogExtendedErrorMsg(const wxChar *userText,
wxDb *pDb,
const wxChar *ErrFile,
int ErrLine)
{
SWORD cb1,cb2;
- if (SQLDataSources(henv, direction, (UCHAR FAR *) Dsn, DsnMax, &cb1,
- (UCHAR FAR *) DsDesc, DsDescMax, &cb2) == SQL_SUCCESS)
+ if (SQLDataSources(henv, direction, (SQLTCHAR FAR *) Dsn, DsnMax, &cb1,
+ (SQLTCHAR FAR *) DsDesc, DsDescMax, &cb2) == SQL_SUCCESS)
return(TRUE);
else
return(FALSE);
return wxDbGetDataSource(henv, Dsn, DsnMax, DsDesc, DsDescMax, direction);
}
/***** DEPRECATED: use wxDbGetConnection() *****/
-wxDb WXDLLEXPORT *GetDbConnection(DbStuff *pDbStuff, bool FwdOnlyCursors)
+wxDb WXDLLIMPEXP_ODBC *GetDbConnection(DbStuff *pDbStuff, bool FwdOnlyCursors)
{
return wxDbGetConnection((wxDbConnectInf *)pDbStuff, FwdOnlyCursors);
}
/***** DEPRECATED: use wxDbFreeConnection() *****/
-bool WXDLLEXPORT FreeDbConnection(wxDb *pDb)
+bool WXDLLIMPEXP_ODBC FreeDbConnection(wxDb *pDb)
{
return wxDbFreeConnection(pDb);
}
/***** DEPRECATED: use wxDbCloseConnections() *****/
-void WXDLLEXPORT CloseDbConnections(void)
+void WXDLLIMPEXP_ODBC CloseDbConnections(void)
{
wxDbCloseConnections();
}
/***** DEPRECATED: use wxDbConnectionsInUse() *****/
-int WXDLLEXPORT NumberDbConnectionsInUse(void)
+int WXDLLIMPEXP_ODBC NumberDbConnectionsInUse(void)
{
return wxDbConnectionsInUse();
}