#include "wx/object.h"
#include "wx/list.h"
#include "wx/utils.h"
- #include "wx/msgdlg.h"
+ #if wxUSE_GUI
+ #include "wx/msgdlg.h"
+ #endif
#include "wx/log.h"
#endif
#include "wx/filefn.h"
(UCHAR FAR *) uid.c_str(), SQL_NTS,
(UCHAR FAR *) authStr.c_str(), SQL_NTS);
-/*
- if (retcode == SQL_SUCCESS_WITH_INFO)
- DispAllErrors(henv, hdbc);
- else if (retcode != SQL_SUCCESS)
- return(DispAllErrors(henv, hdbc));
-
- if (retcode == SQL_ERROR)
- return(DispAllErrors(henv, hdbc));
-*/
if ((retcode != SQL_SUCCESS) &&
(retcode != SQL_SUCCESS_WITH_INFO))
return(DispAllErrors(henv, hdbc));
}
sqlStmt += wxT(" ON ");
- sqlStmt += tableName;
+ sqlStmt += SQLTableName(tableName);
sqlStmt += wxT(" TO ");
sqlStmt += userList;
// Build a generic SELECT statement which returns 0 rows
wxString Stmt;
- Stmt.Printf(wxT("select * from %s where 0=1"), tableName);
+ Stmt.Printf(wxT("select * from \"%s\" where 0=1"), tableName);
// Execute query
if (SQLExecDirect(hstmt, (UCHAR FAR *) Stmt.c_str(), SQL_NTS) != SQL_SUCCESS)
wxChar colName[DB_MAX_COLUMN_NAME_LEN+1];
SWORD sqlDataType;
wxChar typeName[30+1];
- SWORD precision, length;
+ SDWORD precision, length;
FILE *fp = fopen(fileName.c_str(),wxT("wt"));
if (fp == NULL)
tblNameSave.Empty();
int cnt = 0;
- while ((retcode = SQLFetch(hstmt)) == SQL_SUCCESS)
+ while (TRUE)
{
+ retcode = SQLFetch(hstmt);
+ if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO)
+ break;
+
if (wxStrcmp(tblName, tblNameSave.c_str()))
{
if (cnt)
tblNameSave = tblName;
}
- 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_SSHORT,(UCHAR *)&precision, 0, &cb);
- GetData(8,SQL_C_SSHORT,(UCHAR *)&length, 0, &cb);
+ 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);
outStr.Printf(wxT("%-32s %-32s (%04d)%-15s %9d %9d\n"),
tblName, colName, sqlDataType, typeName, precision, length);
} // wxDb::TablePrivileges
+const wxString wxDb::SQLTableName(const wxChar *tableName)
+{
+ wxString TableName;
+
+ if (Dbms() == dbmsACCESS)
+ TableName = '"';
+ TableName += tableName;
+ if (Dbms() == dbmsACCESS)
+ TableName += '"';
+
+ return TableName;
+} // wxDb::SQLTableName()
+
+
+const wxString wxDb::SQLColumnName(const wxChar *colName)
+{
+ wxString ColName;
+
+ if (Dbms() == dbmsACCESS)
+ ColName = '"';
+ ColName += colName;
+ if (Dbms() == dbmsACCESS)
+ ColName += '"';
+
+ return ColName;
+} // wxDb::SQLColumnName()
+
+
/********** wxDb::SetSqlLogging() **********/
bool wxDb::SetSqlLogging(wxDbSqlLogState state, const wxString &filename, bool append)
{
}
// create the SQL statement
- sqlStmt.Printf(wxT("ALTER TABLE %s %s %s %s"), tableName.c_str(), alterSlashModify.c_str(),
+ sqlStmt.Printf(wxT("ALTER TABLE \"%s\" \"%s\" \"%s\" %s"), tableName.c_str(), alterSlashModify.c_str(),
columnName.c_str(), dataTypeName.c_str());
// For varchars only, append the size of the column
/********** wxDbLogExtendedErrorMsg() **********/
// DEBUG ONLY function
-const wxChar WXDLLEXPORT *wxDbLogExtendedErrorMsg(const wxChar *userText, wxDb *pDb,
- char *ErrFile, int ErrLine)
+const wxChar WXDLLEXPORT *wxDbLogExtendedErrorMsg(const wxChar *userText,
+ wxDb *pDb,
+ const wxChar *ErrFile,
+ int ErrLine)
{
static wxString msg;
msg = userText;
msg.Append (wxT("\nODBC errors:\n"));
msg += wxT("\n");
-
+
// Display errors for this connection
int i;
for (i = 0; i < DB_MAX_ERROR_HISTORY; i++)