enum enumDummy {enumDum1};
+#ifndef SQL_C_BOOLEAN
#define SQL_C_BOOLEAN(datatype) (sizeof(datatype) == 1 ? SQL_C_UTINYINT : (sizeof(datatype) == 2 ? SQL_C_USHORT : SQL_C_ULONG))
-// #define SQL_C_BOOLEAN (sizeof(Bool) == 2 ? SQL_C_USHORT : SQL_C_ULONG)
-
+#endif
+#ifndef SQL_C_ENUM
#define SQL_C_ENUM (sizeof(enumDummy) == 2 ? SQL_C_USHORT : SQL_C_ULONG)
+#endif
+#ifndef SQL_C_BLOB
+ #ifdef SQL_LONGVARBINARY
+ #define SQL_C_BLOB SQL_LONGVARBINARY
+ #elif SQL_VARBINARY
+ #define SQL_C_BLOB SQL_VARBINARY
+ #endif
+#endif
#ifndef TRUE
#define TRUE 1
const int DB_DATA_TYPE_INTEGER = 2;
const int DB_DATA_TYPE_FLOAT = 3;
const int DB_DATA_TYPE_DATE = 4;
+const int DB_DATA_TYPE_BLOB = 5;
const int DB_SELECT_KEYFIELDS = 1;
const int DB_SELECT_WHERE = 2;
#define SQL_MAX_AUTHSTR_LEN MAXNAME
#endif
-class wxDbConnectInf
+class WXDLLEXPORT wxDbConnectInf
{
private:
bool freeHenvOnDestroy;
public:
- HENV Henv;
- wxChar Dsn[SQL_MAX_DSN_LENGTH+1]; // Data Source Name
- wxChar Uid[SQL_MAX_USER_NAME_LEN+1]; // User ID
- wxChar AuthStr[SQL_MAX_AUTHSTR_LEN+1]; // Authorization string (password)
+ HENV Henv;
+ wxChar Dsn[SQL_MAX_DSN_LENGTH+1]; // Data Source Name
+ wxChar Uid[SQL_MAX_USER_NAME_LEN+1]; // User ID
+ wxChar AuthStr[SQL_MAX_AUTHSTR_LEN+1]; // Authorization string (password)
wxString Description; // Not sure what the max length is
wxString FileType; // Not sure what the max length is
public:
wxDbConnectInf();
- wxDbConnectInf(HENV henv, const wxString &dsn, const wxString &userID="",
- const wxString &password="", const wxString &defaultDir="",
- const wxString &description="", const wxString &fileType="");
+ wxDbConnectInf(HENV henv, const wxString &dsn, const wxString &userID=wxEmptyString,
+ const wxString &password=wxEmptyString, const wxString &defaultDir=wxEmptyString,
+ const wxString &description=wxEmptyString, const wxString &fileType=wxEmptyString);
~wxDbConnectInf();
void FreeHenv();
// Accessors
- const HENV GetHenv() { return Henv; };
- const HENV &GetHenvAddress() { return Henv; };
+ const HENV &GetHenv() { return Henv; };
const wxChar *GetDsn() { return Dsn; };
}; // class wxDbConnectInf
-struct wxDbSqlTypeInfo
+struct WXDLLEXPORT wxDbSqlTypeInfo
{
wxString TypeName;
- int FsqlType;
+ SWORD FsqlType;
long Precision;
short CaseSensitive;
// short MinimumScale;
wxDbColFor();
~wxDbColFor();
+ void Initialize();
int Format(int Nation, int dbDataType, SWORD sqlDataType, short columnSize, short decimalDigits);
};
wxDbColInf();
~wxDbColInf();
+
+ bool Initialize();
};
wxChar tableName[DB_MAX_TABLE_NAME_LEN+1];
wxChar tableType[254+1]; // "TABLE" or "SYSTEM TABLE" etc.
wxChar tableRemarks[254+1];
- int numCols; // How many Columns does this Table have: GetColumnCount(..);
+ UWORD numCols; // How many Columns does this Table have: GetColumnCount(..);
wxDbColInf *pColInf; // pColInf = NULL ; User can later call GetColumns(..);
+
wxDbTableInf();
~wxDbTableInf();
+
+ bool Initialize();
};
wxDbInf();
~wxDbInf();
+
+ bool Initialize();
};
dbmsINFORMIX,
dbmsVIRTUOSO,
dbmsDB2,
- dbmsINTERBASE
+ dbmsINTERBASE,
+ dbmsPERVASIVE_SQL
};
bool setConnectionOptions(void);
void logError(const wxString &errMsg, const wxString &SQLState);
const wxChar *convertUserID(const wxChar *userID, wxString &UserID);
+ void initialize();
#if !wxODBC_BACKWARD_COMPATABILITY
// ODBC handles
wxDbSqlTypeInfo typeInfInteger;
wxDbSqlTypeInfo typeInfFloat;
wxDbSqlTypeInfo typeInfDate;
+ wxDbSqlTypeInfo typeInfBlob;
#endif
public:
+
+ bool GetDataTypeInfo(SWORD fSqlType, wxDbSqlTypeInfo &structSQLTypeInfo)
+ { return getDataTypeInfo(fSqlType, structSQLTypeInfo); }
+
#if wxODBC_BACKWARD_COMPATABILITY
// ODBC handles
HENV henv; // ODBC Environment handle
wxDbSqlTypeInfo typeInfInteger;
wxDbSqlTypeInfo typeInfFloat;
wxDbSqlTypeInfo typeInfDate;
+ wxDbSqlTypeInfo typeInfBlob;
#endif
// Public member functions
- wxDb(HENV &aHenv, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
- void Initialize();
+ wxDb(const HENV &aHenv, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
bool Open(const wxString &Dsn, const wxString &Uid, const wxString &AuthStr); // Data Source Name, User ID, Password
+ bool Open(wxDbConnectInf *dbConnectInf);
bool Open(wxDb *copyDb); // pointer to a wxDb whose connection info should be copied rather than re-queried
void Close(void);
bool CommitTrans(void);
int TranslateSqlState(const wxString &SQLState);
wxDbInf *GetCatalog(const wxChar *userID=NULL);
bool Catalog(const wxChar *userID=NULL, const wxString &fileName=SQL_CATALOG_FILENAME);
- int GetKeyFields(const wxString &tableName, wxDbColInf* colInf, int nocols);
+ int GetKeyFields(const wxString &tableName, wxDbColInf* colInf, UWORD noCols);
wxDbColInf *GetColumns(wxChar *tableName[], const wxChar *userID=NULL);
- wxDbColInf *GetColumns(const wxString &tableName, int *numCols, const wxChar *userID=NULL);
+ wxDbColInf *GetColumns(const wxString &tableName, UWORD *numCols, const wxChar *userID=NULL);
- int GetColumnCount(const wxString &tableName, const wxChar *userID=NULL);
- const wxChar *GetDatabaseName(void) {return dbInf.dbmsName;}
+ UWORD GetColumnCount(const wxString &tableName, const wxChar *userID=NULL);
+ const wxChar *GetDatabaseName(void) {return dbInf.dbmsName;}
const wxString &GetDataSource(void) {return dsn;}
const wxString &GetDatasourceName(void){return dsn;}
const wxString &GetUsername(void) {return uid;}
const wxString &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;}
-
- bool TableExists(const wxString &tableName, const wxChar *userID=NULL, const wxString &tablePath=wxT("")); // tableName can refer to a table, view, alias or synonym
- bool TablePrivileges(const wxString &tableName, const wxString &priv, const wxChar *userID=NULL, const wxChar *schema=NULL, const wxString &path=wxT("")); // tableName can refer to a table, view, alias or synonym
- void LogError(const wxString &errMsg, const wxString &SQLState = wxT("")) { logError(errMsg, SQLState); }
+ 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;}
+ wxDbSqlTypeInfo GetTypeInfBlob() {return typeInfBlob;}
+
+ // tableName can refer to a table, view, alias or synonym
+ bool TableExists(const wxString &tableName, const wxChar *userID=NULL,
+ const wxString &tablePath=wxEmptyString);
+ bool TablePrivileges(const wxString &tableName, const wxString &priv,
+ const wxChar *userID=NULL, const wxChar *schema=NULL,
+ const wxString &path=wxEmptyString);
+
+ void LogError(const wxString &errMsg, const wxString &SQLState = wxEmptyString)
+ { logError(errMsg, SQLState); }
void SetDebugErrorMessages(bool state) { silent = !state; }
- bool SetSqlLogging(wxDbSqlLogState state, const wxString &filename = SQL_LOG_FILENAME, bool append = FALSE);
+ bool SetSqlLogging(wxDbSqlLogState state, const wxString &filename = SQL_LOG_FILENAME,
+ bool append = FALSE);
bool WriteSqlLog(const wxString &logMsg);
+
wxDBMS Dbms(void);
bool ModifyColumn(const wxString &tableName, const wxString &columnName,
int dataType, ULONG columnLength=0,
- const wxString &optionalParam="");
+ const wxString &optionalParam=wxEmptyString);
bool FwdOnlyCursors(void) {return fwdOnlyCursors;}
// This function sets the sql log state for all open wxDb objects
-bool wxDbSqlLog(wxDbSqlLogState state, const wxChar *filename = SQL_LOG_FILENAME);
+bool wxDbSqlLog(wxDbSqlLogState state, const wxString &filename = SQL_LOG_FILENAME);
#if 0
// MSW/VC6 ONLY!!! Experimental
-int WXDLLEXPORT wxDbCreateDataSource(const wxString &driverName, const wxString &dsn, const wxString &description=wxT(""),
- bool sysDSN=FALSE, const wxString &defDir=wxT(""), wxWindow *parent=NULL);
+int WXDLLEXPORT wxDbCreateDataSource(const wxString &driverName, const wxString &dsn, const wxString &description=wxEmptyString,
+ bool sysDSN=FALSE, const wxString &defDir=wxEmptyString, wxWindow *parent=NULL);
#endif
// This routine allows you to query a driver manager