X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3ca6a5f04692678cd2d9f3ea0843fc3f5a0b254f..258e5c7427015e93a233c4d1a5d3cd164abbe57c:/include/wx/db.h?ds=sidebyside diff --git a/include/wx/db.h b/include/wx/db.h index ad1b1ce5c9..5848ef0b63 100644 --- a/include/wx/db.h +++ b/include/wx/db.h @@ -6,7 +6,7 @@ // Author: Doug Card // Modified by: George Tasker // Bart Jourquin -// Mark Johnson +// Mark Johnson, wxWindows@mj10777.de // Mods: Dec, 1998: // -Added support for SQL statement logging and database cataloging // April, 1999 @@ -44,7 +44,7 @@ // BJO 20000503: introduce new GetColumns members which are more database independant and // return columns in the order they were created #define OLD_GETCOLUMNS 1 -#define EXPERIMENTAL_WXDB_FUNCTIONS 0 +#define EXPERIMENTAL_WXDB_FUNCTIONS 1 // Use this line for wxWindows v1.x //#include "wx_ver.h" @@ -61,19 +61,34 @@ #if wxMAJOR_VERSION == 2 extern "C" { +#ifdef __VISUALC__ +// If you use the wxDbCreateDataSource() function with MSW/VC6, +// you cannot use the iODBC headers, you must use the VC headers, +// plus the odbcinst.h header - gt Nov 2 2000 +// +// Must add "odbccp32.lib" in \wx2\wxWindows\src\makevc.env to the WINLIBS= line +// + #include "sql.h" + #include "sqlext.h" + #include "odbcinst.h" +#else #include "wx/isql.h" #include "wx/isqlext.h" -// If you use the wxCreateDataSource() function with MSW/VC6, -// you cannot use the iODBC headers, you must use the VC headers, -// plus the odbcinst.h header - //#include "sql.h" - //#include "sqlext.h" - //#include "odbcinst.h" +#endif } #else // version == 1 extern "C" { +#ifdef __VISUALC__ +// If you use the wxDbCreateDataSource() function with MSW/VC6, +// you cannot use the iODBC headers, you must use the VC headers, +// plus the odbcinst.h header - gt Nov 2 2000 + #include "sql.h" + #include "sqlext.h" + #include "odbcinst.h" +#else #include "iodbc.h" #include "isqlext.h" +#endif } #endif @@ -109,8 +124,8 @@ extern char const *SQL_CATALOG_FILENAME; // Database Globals const int DB_TYPE_NAME_LEN = 40; -const int DB_MAX_STATEMENT_LEN = 2048; -const int DB_MAX_WHERE_CLAUSE_LEN = 1024; +const int DB_MAX_STATEMENT_LEN = 4096; +const int DB_MAX_WHERE_CLAUSE_LEN = 2048; const int DB_MAX_ERROR_MSG_LEN = 512; const int DB_MAX_ERROR_HISTORY = 5; const int DB_MAX_TABLE_NAME_LEN = 128; @@ -360,7 +375,9 @@ enum wxDBMS dbmsACCESS, dbmsDBASE, dbmsINFORMIX, - dbmsVIRTUOSO + dbmsVIRTUOSO, + dbmsDB2, + dbmsINTERBASE }; @@ -384,12 +401,14 @@ private: FILE *fpSqlLog; // Sql Log file pointer wxDbSqlLogState sqlLogState; // On or Off bool fwdOnlyCursors; + wxDBMS dbmsType; // Type of datasource - i.e. Oracle, dBase, SQLServer, etc // Private member functions bool getDbInfo(void); bool getDataTypeInfo(SWORD fSqlType, wxDbSqlTypeInfo &structSQLTypeInfo); bool setConnectionOptions(void); void logError(const char *errMsg, const char *SQLState); + void initialize(); #if !wxODBC_BACKWARD_COMPATABILITY // ODBC handles HENV henv; // ODBC Environment handle @@ -442,9 +461,7 @@ public: char databaseName[128]; // Database filename char outerJoins[2]; // Indicates whether the data source supports outer joins char procedureSupport[2]; // Indicates whether the data source supports stored procedures -#if EXPERIMENTAL_WXDB_FUNCTIONS // will be added in 2.4 char accessibleTables[2]; // Indicates whether the data source only reports accessible tables in SQLTables. -#endif UWORD maxConnections; // Maximum # of connections the data source supports UWORD maxStmts; // Maximum # of HSTMTs per HDBC UWORD apiConfLvl; // ODBC API conformance level @@ -491,6 +508,7 @@ public: // Public member functions wxDb(HENV &aHenv, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS); bool Open(char *Dsn, char *Uid, char *AuthStr); // Data Source Name, User ID, Password + bool Open(wxDb *copyDb); // pointer to a wxDb whose connection info should be copied rather than re-queried void Close(void); bool CommitTrans(void); bool RollbackTrans(void); @@ -512,25 +530,24 @@ public: wxDbColInf *GetColumns(char *tableName, int *numCols, const char *userID=NULL); int GetColumnCount(char *tableName, const char *userID=NULL); - char *GetDatabaseName(void) {return dbInf.dbmsName;} - char *GetDataSource(void) {return dsn;} - char *GetUsername(void) {return uid;} - char *GetPassword(void) {return authStr;} - bool IsOpen(void) {return dbIsOpen;} - HENV GetHENV(void) {return henv;} - HDBC GetHDBC(void) {return hdbc;} - HSTMT GetHSTMT(void) {return hstmt;} - int GetTableCount() {return nTables;}; // number of tables using this connection - wxDbSqlTypeInfo GetTypeInfVarchar(){return typeInfVarchar;} - wxDbSqlTypeInfo GetTypeInfInteger(){return typeInfInteger;} - wxDbSqlTypeInfo GetTypeInfFloat() {return typeInfFloat;} - wxDbSqlTypeInfo GetTypeInfDate() {return typeInfDate;} + const char *GetDatabaseName(void) {return dbInf.dbmsName;} + const char *GetDataSource(void) {return (const char *)dsn;} + const char *GetDatasourceName(void){return (const char *)dsn;} + const char *GetUsername(void) {return (const char *)uid;} + const char *GetPassword(void) {return (const char *)authStr;} + bool IsOpen(void) {return dbIsOpen;} + HENV GetHENV(void) {return henv;} + HDBC GetHDBC(void) {return hdbc;} + HSTMT GetHSTMT(void) {return hstmt;} + int GetTableCount() {return nTables;}; // number of tables using this connection + wxDbSqlTypeInfo GetTypeInfVarchar() {return typeInfVarchar;} + wxDbSqlTypeInfo GetTypeInfInteger() {return typeInfInteger;} + wxDbSqlTypeInfo GetTypeInfFloat() {return typeInfFloat;} + wxDbSqlTypeInfo GetTypeInfDate() {return typeInfDate;} bool TableExists(const char *tableName, const char *userID=NULL, const char *path=NULL); // Table name can refer to a table, view, alias or synonym -#if EXPERIMENTAL_WXDB_FUNCTIONS // will be added in 2.4 - bool TablePrivileges(const char *tableName, const char* priv, const char *userID=NULL, const char *path=NULL); // Table name can refer to a table, view, alias or synonym -#endif - void LogError(const char *errMsg, const char *SQLState = 0) {logError(errMsg, SQLState);} + bool TablePrivileges(const char *tableName, const char* priv, const char *userID="", const char *schema=NULL, const char *path=""); // Table name can refer to a table, view, alias or synonym + void LogError(const char *errMsg, const char *SQLState = NULL) {logError(errMsg, SQLState);} void SetDebugErrorMessages(bool state) { silent = !state; } bool SetSqlLogging(wxDbSqlLogState state, const wxChar *filename = SQL_LOG_FILENAME, bool append = FALSE); bool WriteSqlLog(const wxChar *logMsg); @@ -553,6 +570,8 @@ struct wxDbList { wxDbList *PtrPrev; // Pointer to previous item in the list wxChar Dsn[SQL_MAX_DSN_LENGTH+1]; // Data Source Name + wxChar Uid[20+1]; // User ID + wxChar AuthStr[20+1]; // Authorization string (password) wxDb *PtrDb; // Pointer to the wxDb object bool Free; // Is item free or in use? wxDbList *PtrNext; // Pointer to next item in the list