]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/db.h
applied patch 430452 (mingw32 compilation fixes)
[wxWidgets.git] / include / wx / db.h
index d5bfa18e56a60cee85bb2bd05e116d392a5fce20..84c8a3a9f7c921705577563797df929b12e8a5ed 100644 (file)
@@ -103,10 +103,19 @@ typedef unsigned int UINT;
 
 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
@@ -135,6 +144,7 @@ const int DB_DATA_TYPE_VARCHAR        = 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;
@@ -264,16 +274,16 @@ enum wxODBC_ERRORS
 #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
@@ -284,9 +294,9 @@ class wxDbConnectInf
     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();
 
@@ -296,8 +306,7 @@ class wxDbConnectInf
         void             FreeHenv();
 
         // Accessors
-        const HENV       GetHenv()          { return Henv; };
-        const HENV      &GetHenvAddress()   { return Henv; };
+        const HENV       &GetHenv()          { return Henv; };
 
         const wxChar    *GetDsn()           { return Dsn; };
 
@@ -327,10 +336,10 @@ class wxDbConnectInf
 };  // class wxDbConnectInf
 
 
-struct wxDbSqlTypeInfo
+struct WXDLLEXPORT wxDbSqlTypeInfo
 {
     wxString    TypeName;
-    int         FsqlType;
+    SWORD       FsqlType;
     long        Precision;
     short       CaseSensitive;
 //    short     MinimumScale;
@@ -352,6 +361,7 @@ public:
     wxDbColFor();
     ~wxDbColFor();
 
+    void           Initialize();
     int            Format(int Nation, int dbDataType, SWORD sqlDataType, short columnSize, short decimalDigits);
 };
 
@@ -381,6 +391,8 @@ public:
 
     wxDbColInf();
     ~wxDbColInf();
+
+    bool Initialize();
 };
 
 
@@ -392,10 +404,13 @@ public:
     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();
 };
 
 
@@ -409,6 +424,8 @@ public:
 
     wxDbInf();
     ~wxDbInf();
+
+    bool          Initialize();
 };
 
 
@@ -435,7 +452,8 @@ enum wxDBMS
     dbmsINFORMIX,
     dbmsVIRTUOSO,
     dbmsDB2,
-    dbmsINTERBASE
+    dbmsINTERBASE,
+    dbmsPERVASIVE_SQL
 };
 
 
@@ -467,6 +485,7 @@ private:
     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
@@ -490,9 +509,14 @@ private:
     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
@@ -562,13 +586,14 @@ public:
     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);
@@ -585,37 +610,46 @@ public:
     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;}
 
@@ -665,13 +699,13 @@ int   WXDLLEXPORT  wxDbConnectionsInUse(void);
 
 
 // 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