fixed wxDB compilation

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-03-30 21:31:20 +00:00
parent 9f6986b3e2
commit 834f138686
3 changed files with 57 additions and 43 deletions

View File

@@ -525,7 +525,7 @@ private:
bool getDataTypeInfo(SWORD fSqlType, wxDbSqlTypeInfo &structSQLTypeInfo);
bool setConnectionOptions(void);
void logError(const wxString &errMsg, const wxString &SQLState);
const wxChar *convertUserID(const wxChar *userID, wxString &UserID);
void convertUserID(const wxChar *userID, wxString &UserID);
bool determineDataTypes(bool failOnDataTypeUnsupported);
void initialize();
bool open(bool failOnDataTypeUnsupported=true);

View File

@@ -53,6 +53,13 @@
#include "wx/db.h"
// FIXME-UTF8: get rid of this after switching to Unicode-only builds:
#if wxUSE_UNICODE
#define WXSQLCAST(s) ((SQLTCHAR FAR *)(wchar_t*)(s).wchar_str())
#else
#define WXSQLCAST(s) ((SQLTCHAR FAR *)(char*)(s).char_str())
#endif
// DLL options compatibility check:
WX_CHECK_BUILD_OPTIONS("wxODBC")
@@ -560,7 +567,7 @@ void wxDb::initialize()
// immediately, as the value is not good after
// this function has left scope.
//
const wxChar *wxDb::convertUserID(const wxChar *userID, wxString &UserID)
void wxDb::convertUserID(const wxChar *userID, wxString &UserID)
{
if (userID)
{
@@ -582,8 +589,6 @@ const wxChar *wxDb::convertUserID(const wxChar *userID, wxString &UserID)
if ((Dbms() == dbmsORACLE) ||
(Dbms() == dbmsMAXDB))
UserID = UserID.Upper();
return UserID.c_str();
} // wxDb::convertUserID()
@@ -859,7 +864,7 @@ bool wxDb::Open(const wxString& inConnectStr, SQLHWND parentWnd, bool failOnData
inConnectionStr = inConnectStr;
retcode = SQLDriverConnect(hdbc, parentWnd, (SQLTCHAR FAR *)inConnectionStr.c_str(),
retcode = SQLDriverConnect(hdbc, parentWnd, WXSQLCAST(inConnectionStr),
(SWORD)inConnectionStr.length(), (SQLTCHAR FAR *)outConnectBuffer,
WXSIZEOF(outConnectBuffer), &outConnectBufferLen, SQL_DRIVER_COMPLETE );
@@ -904,9 +909,10 @@ bool wxDb::Open(const wxString &Dsn, const wxString &Uid, const wxString &AuthSt
}
// Connect to the data source
retcode = SQLConnect(hdbc, (SQLTCHAR FAR *) dsn.c_str(), SQL_NTS,
(SQLTCHAR FAR *) uid.c_str(), SQL_NTS,
(SQLTCHAR FAR *) authStr.c_str(), SQL_NTS);
retcode = SQLConnect(hdbc,
WXSQLCAST(dsn), SQL_NTS,
WXSQLCAST(uid), SQL_NTS,
WXSQLCAST(authStr), SQL_NTS);
if ((retcode != SQL_SUCCESS) &&
(retcode != SQL_SUCCESS_WITH_INFO))
@@ -964,7 +970,7 @@ bool wxDb::Open(wxDb *copyDb)
inConnectionStr = copyDb->GetConnectionInStr();
retcode = SQLDriverConnect(hdbc, NULL, (SQLTCHAR FAR *)inConnectionStr.c_str(),
retcode = SQLDriverConnect(hdbc, NULL, WXSQLCAST(inConnectionStr),
(SWORD)inConnectionStr.length(), (SQLTCHAR FAR *)outConnectBuffer,
WXSIZEOF(outConnectBuffer), &outConnectBufferLen, SQL_DRIVER_COMPLETE);
@@ -979,9 +985,10 @@ bool wxDb::Open(wxDb *copyDb)
else
{
// Connect to the data source
retcode = SQLConnect(hdbc, (SQLTCHAR FAR *) dsn.c_str(), SQL_NTS,
(SQLTCHAR FAR *) uid.c_str(), SQL_NTS,
(SQLTCHAR FAR *) authStr.c_str(), SQL_NTS);
retcode = SQLConnect(hdbc,
WXSQLCAST(dsn), SQL_NTS,
WXSQLCAST(uid), SQL_NTS,
WXSQLCAST(authStr), SQL_NTS);
}
if ((retcode != SQL_SUCCESS) &&
@@ -2215,7 +2222,7 @@ bool wxDb::DropView(const wxString &viewName)
cout << endl << sqlStmt.c_str() << endl;
#endif
if (SQLExecDirect(hstmt, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS) != SQL_SUCCESS)
if (SQLExecDirect(hstmt, WXSQLCAST(sqlStmt), SQL_NTS) != SQL_SUCCESS)
{
// Check for "Base table not found" error and ignore
GetNextError(henv, hdbc, hstmt);
@@ -2248,7 +2255,7 @@ bool wxDb::ExecSql(const wxString &pSqlStmt)
SQLFreeStmt(hstmt, SQL_CLOSE);
retcode = SQLExecDirect(hstmt, (SQLTCHAR FAR *) pSqlStmt.c_str(), SQL_NTS);
retcode = SQLExecDirect(hstmt, WXSQLCAST(pSqlStmt), SQL_NTS);
if (retcode == SQL_SUCCESS ||
(Dbms() == dbmsDB2 && (retcode == SQL_SUCCESS_WITH_INFO || retcode == SQL_NO_DATA_FOUND)))
{
@@ -2429,7 +2436,7 @@ int wxDb::GetKeyFields(const wxString &tableName, wxDbColInf* colInf, UWORD noCo
retcode = SQLPrimaryKeys(hstmt,
NULL, 0, /* Catalog name */
NULL, 0, /* Schema name */
(SQLTCHAR FAR *) tableName.c_str(), SQL_NTS); /* Table name */
WXSQLCAST(tableName), SQL_NTS); /* Table name */
/*---------------------------------------------------------------------*/
/* Fetch and display the result set. This will be a list of the */
@@ -2456,7 +2463,7 @@ int wxDb::GetKeyFields(const wxString &tableName, wxDbColInf* colInf, UWORD noCo
retcode = SQLForeignKeys(hstmt,
NULL, 0, /* Primary catalog */
NULL, 0, /* Primary schema */
(SQLTCHAR FAR *)tableName.c_str(), SQL_NTS,/* Primary table */
WXSQLCAST(tableName), SQL_NTS,/* Primary table */
NULL, 0, /* Foreign catalog */
NULL, 0, /* Foreign schema */
NULL, 0); /* Foreign table */
@@ -2505,7 +2512,7 @@ int wxDb::GetKeyFields(const wxString &tableName, wxDbColInf* colInf, UWORD noCo
NULL, 0, /* Primary table */
NULL, 0, /* Foreign catalog */
NULL, 0, /* Foreign schema */
(SQLTCHAR *)tableName.c_str(), SQL_NTS);/* Foreign table */
WXSQLCAST(tableName), SQL_NTS);/* Foreign table */
/*---------------------------------------------------------------------*/
/* Fetch and display the result set. This will be all of the */
@@ -2623,8 +2630,8 @@ wxDbColInf *wxDb::GetColumns(wxChar *tableName[], const wxChar *userID)
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
(SQLTCHAR *) UserID.c_str(), SQL_NTS, // Owner
(SQLTCHAR *) TableName.c_str(), SQL_NTS,
WXSQLCAST(UserID), SQL_NTS, // Owner
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All columns
}
else
@@ -2632,7 +2639,7 @@ wxDbColInf *wxDb::GetColumns(wxChar *tableName[], const wxChar *userID)
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // Owner
(SQLTCHAR *) TableName.c_str(), SQL_NTS,
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All columns
}
if (retcode != SQL_SUCCESS)
@@ -2779,8 +2786,8 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, UWORD *numCols, const wx
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
(SQLTCHAR *) UserID.c_str(), SQL_NTS, // Owner
(SQLTCHAR *) TableName.c_str(), SQL_NTS,
WXSQLCAST(UserID), SQL_NTS, // Owner
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All columns
}
else
@@ -2788,7 +2795,7 @@ wxDbColInf *wxDb::GetColumns(const wxString &tableName, UWORD *numCols, const wx
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // Owner
(SQLTCHAR *) TableName.c_str(), SQL_NTS,
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All columns
}
if (retcode != SQL_SUCCESS)
@@ -3286,8 +3293,8 @@ int wxDb::GetColumnCount(const wxString &tableName, const wxChar *userID)
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
(SQLTCHAR *) UserID.c_str(), SQL_NTS, // Owner
(SQLTCHAR *) TableName.c_str(), SQL_NTS,
WXSQLCAST(UserID), SQL_NTS, // Owner
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All columns
}
else
@@ -3295,7 +3302,7 @@ int wxDb::GetColumnCount(const wxString &tableName, const wxChar *userID)
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // Owner
(SQLTCHAR *) TableName.c_str(), SQL_NTS,
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All columns
}
if (retcode != SQL_SUCCESS)
@@ -3379,7 +3386,7 @@ wxDbInf *wxDb::GetCatalog(const wxChar *userID)
{
retcode = SQLTables(hstmt,
NULL, 0, // All qualifiers
(SQLTCHAR *) UserID.c_str(), SQL_NTS, // User specified
WXSQLCAST(UserID), SQL_NTS, // User specified
NULL, 0, // All tables
NULL, 0); // All columns
}
@@ -3486,7 +3493,7 @@ bool wxDb::Catalog(const wxChar *userID, const wxString &fileName)
{
retcode = SQLColumns(hstmt,
NULL, 0, // All qualifiers
(SQLTCHAR *) UserID.c_str(), SQL_NTS, // User specified
WXSQLCAST(UserID), SQL_NTS, // User specified
NULL, 0, // All tables
NULL, 0); // All columns
}
@@ -3621,8 +3628,8 @@ bool wxDb::TableExists(const wxString &tableName, const wxChar *userID, const wx
{
retcode = SQLTables(hstmt,
NULL, 0, // All qualifiers
(SQLTCHAR *) UserID.c_str(), SQL_NTS, // Only tables owned by this user
(SQLTCHAR FAR *)TableName.c_str(), SQL_NTS,
WXSQLCAST(UserID), SQL_NTS, // Only tables owned by this user
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All table types
}
else
@@ -3630,7 +3637,7 @@ bool wxDb::TableExists(const wxString &tableName, const wxChar *userID, const wx
retcode = SQLTables(hstmt,
NULL, 0, // All qualifiers
NULL, 0, // All owners
(SQLTCHAR FAR *)TableName.c_str(), SQL_NTS,
WXSQLCAST(TableName), SQL_NTS,
NULL, 0); // All table types
}
if (retcode != SQL_SUCCESS)
@@ -3689,15 +3696,15 @@ bool wxDb::TablePrivileges(const wxString &tableName, const wxString &priv, cons
{
retcode = SQLTablePrivileges(hstmt,
NULL, 0, // Catalog
(SQLTCHAR FAR *)Schema.c_str(), SQL_NTS, // Schema
(SQLTCHAR FAR *)TableName.c_str(), SQL_NTS);
WXSQLCAST(Schema), SQL_NTS, // Schema
WXSQLCAST(TableName), SQL_NTS);
}
else
{
retcode = SQLTablePrivileges(hstmt,
NULL, 0, // Catalog
NULL, 0, // Schema
(SQLTCHAR FAR *)TableName.c_str(), SQL_NTS);
WXSQLCAST(TableName), SQL_NTS);
}
#ifdef DBDEBUG_CONSOLE

View File

@@ -39,6 +39,13 @@
#include "wx/dbtable.h"
// FIXME-UTF8: get rid of this after switching to Unicode-only builds:
#if wxUSE_UNICODE
#define WXSQLCAST(s) ((SQLTCHAR FAR *)(wchar_t*)(s).wchar_str())
#else
#define WXSQLCAST(s) ((SQLTCHAR FAR *)(char*)(s).char_str())
#endif
ULONG lastTableID = 0;
@@ -615,7 +622,7 @@ bool wxDbTable::execDelete(const wxString &pSqlStmt)
RETCODE retcode;
// Execute the DELETE statement
retcode = SQLExecDirect(hstmtDelete, (SQLTCHAR FAR *) pSqlStmt.c_str(), SQL_NTS);
retcode = SQLExecDirect(hstmtDelete, WXSQLCAST(pSqlStmt), SQL_NTS);
if (retcode == SQL_SUCCESS ||
retcode == SQL_NO_DATA_FOUND ||
@@ -637,7 +644,7 @@ bool wxDbTable::execUpdate(const wxString &pSqlStmt)
RETCODE retcode;
// Execute the UPDATE statement
retcode = SQLExecDirect(hstmtUpdate, (SQLTCHAR FAR *) pSqlStmt.c_str(), SQL_NTS);
retcode = SQLExecDirect(hstmtUpdate, WXSQLCAST(pSqlStmt), SQL_NTS);
if (retcode == SQL_SUCCESS ||
retcode == SQL_NO_DATA_FOUND ||
@@ -709,7 +716,7 @@ bool wxDbTable::query(int queryType, bool forUpdate, bool distinct, const wxStri
// Execute the SQL SELECT statement
int retcode;
retcode = SQLExecDirect(hstmt, (SQLTCHAR FAR *) (queryType == DB_SELECT_STATEMENT ? pSqlStmt.c_str() : sqlStmt.c_str()), SQL_NTS);
retcode = SQLExecDirect(hstmt, (queryType == DB_SELECT_STATEMENT ? WXSQLCAST(pSqlStmt) : WXSQLCAST(sqlStmt)), SQL_NTS);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
return(pDb->DispAllErrors(henv, hdbc, hstmt));
@@ -848,7 +855,7 @@ bool wxDbTable::Open(bool checkPrivileges, bool checkTableExists)
// Prepare the insert statement for execution
if (insertableCount)
{
if (SQLPrepare(hstmtInsert, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS) != SQL_SUCCESS)
if (SQLPrepare(hstmtInsert, WXSQLCAST(sqlStmt), SQL_NTS) != SQL_SUCCESS)
return(pDb->DispAllErrors(henv, hdbc, hstmtInsert));
}
else
@@ -1563,7 +1570,7 @@ bool wxDbTable::CreateTable(bool attemptDrop)
#endif
// Execute the CREATE TABLE statement
RETCODE retcode = SQLExecDirect(hstmt, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS);
RETCODE retcode = SQLExecDirect(hstmt, WXSQLCAST(sqlStmt), SQL_NTS);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
{
pDb->DispAllErrors(henv, hdbc, hstmt);
@@ -1603,7 +1610,7 @@ bool wxDbTable::DropTable()
cout << endl << sqlStmt.c_str() << endl;
#endif
RETCODE retcode = SQLExecDirect(hstmt, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS);
RETCODE retcode = SQLExecDirect(hstmt, WXSQLCAST(sqlStmt), SQL_NTS);
if (retcode != SQL_SUCCESS)
{
// Check for "Base table not found" error and ignore
@@ -1772,7 +1779,7 @@ bool wxDbTable::CreateIndex(const wxString &indexName, bool unique, UWORD numInd
#endif
// Execute the CREATE INDEX statement
RETCODE retcode = SQLExecDirect(hstmt, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS);
RETCODE retcode = SQLExecDirect(hstmt, WXSQLCAST(sqlStmt), SQL_NTS);
if (retcode != SQL_SUCCESS)
{
pDb->DispAllErrors(henv, hdbc, hstmt);
@@ -1823,7 +1830,7 @@ bool wxDbTable::DropIndex(const wxString &indexName)
#ifdef DBDEBUG_CONSOLE
cout << endl << sqlStmt.c_str() << endl;
#endif
RETCODE retcode = SQLExecDirect(hstmt, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS);
RETCODE retcode = SQLExecDirect(hstmt, WXSQLCAST(sqlStmt), SQL_NTS);
if (retcode != SQL_SUCCESS)
{
// Check for "Index not found" error and ignore
@@ -2470,7 +2477,7 @@ ULONG wxDbTable::Count(const wxString &args)
}
// Execute the SQL statement
if (SQLExecDirect(*hstmtCount, (SQLTCHAR FAR *) sqlStmt.c_str(), SQL_NTS) != SQL_SUCCESS)
if (SQLExecDirect(*hstmtCount, WXSQLCAST(sqlStmt), SQL_NTS) != SQL_SUCCESS)
{
pDb->DispAllErrors(henv, hdbc, *hstmtCount);
return(0);