#include "wx/version.h"
-#if defined(__GNUG__) && !defined(__APPLE__)
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "db.h"
#endif
#include "wx/defs.h"
#include "wx/string.h"
-#ifdef __VISUALC__
+#if defined(__VISUALC__)
// we need to include standard Windows headers but we can't include
// <windows.h> directly when using MFC because it includes it itself in a
// different manner
#include "sqlext.h"
#include "odbcinst.h"
#else
- // Use the ones from the library
+ #if defined(__WINDOWS__) && defined(HAVE_W32API_H)
+ #include <windows.h>
+ #include "wx/msw/winundef.h"
+ #endif
extern "C" {
+ #if defined(wxUSE_BUILTIN_IODBC) && wxUSE_BUILTIN_IODBC
+ // Use the ones from the library
+ #include "wx/isql.h"
+ #include "wx/isqlext.h"
+ #else
#include <sql.h>
#include <sqlext.h>
+ #endif
}
#endif
typedef unsigned int UINT;
#define ULONG UDWORD
+// Not available in iODBC
+#ifndef __WXMSW__
+typedef UCHAR SQLTCHAR;
+#endif
+
#ifndef wxODBC_FWD_ONLY_CURSORS
#define wxODBC_FWD_ONLY_CURSORS 1
#endif
*/
const int wxDB_PATH_MAX = 254;
-WXDLLEXPORT_DATA(extern wxChar const *) SQL_LOG_FILENAME;
-WXDLLEXPORT_DATA(extern wxChar const *) SQL_CATALOG_FILENAME;
+WXDLLIMPEXP_DATA_ODBC(extern wxChar const *) SQL_LOG_FILENAME;
+WXDLLIMPEXP_DATA_ODBC(extern wxChar const *) SQL_CATALOG_FILENAME;
// Database Globals
const int DB_TYPE_NAME_LEN = 40;
#define SQL_MAX_AUTHSTR_LEN MAXNAME
#endif
-class WXDLLEXPORT wxDbConnectInf
+class WXDLLIMPEXP_ODBC wxDbConnectInf
{
private:
bool freeHenvOnDestroy;
}; // class wxDbConnectInf
-struct WXDLLEXPORT wxDbSqlTypeInfo
+struct WXDLLIMPEXP_ODBC wxDbSqlTypeInfo
{
wxString TypeName;
SWORD FsqlType;
};
-class WXDLLEXPORT wxDbColFor
+class WXDLLIMPEXP_ODBC wxDbColFor
{
public:
wxString s_Field; // Formated String for Output
};
-class WXDLLEXPORT wxDbColInf
+class WXDLLIMPEXP_ODBC wxDbColInf
{
public:
wxChar catalog[128+1];
};
-class WXDLLEXPORT wxDbTableInf // Description of a Table
+class WXDLLIMPEXP_ODBC wxDbTableInf // Description of a Table
{
public:
wxChar tableName[DB_MAX_TABLE_NAME_LEN+1];
};
-class WXDLLEXPORT wxDbInf // Description of a Database
+class WXDLLIMPEXP_ODBC wxDbInf // Description of a Database
{
public:
wxChar catalog[128+1];
// will overwrite the errors of the previously destroyed wxDb object in
// this variable.
-WXDLLEXPORT_DATA(extern wxChar) DBerrorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN];
+WXDLLIMPEXP_DATA_BASE(extern wxChar)
+ DBerrorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN];
-class WXDLLEXPORT wxDb
+class WXDLLIMPEXP_ODBC wxDb
{
private:
bool dbIsOpen;
wxDBMS dbmsType; // Type of datasource - i.e. Oracle, dBase, SQLServer, etc
// Private member functions
- bool getDbInfo(void);
+ bool getDbInfo(bool failOnDataTypeUnsupported = TRUE);
bool getDataTypeInfo(SWORD fSqlType, wxDbSqlTypeInfo &structSQLTypeInfo);
bool setConnectionOptions(void);
void logError(const wxString &errMsg, const wxString &SQLState);
// The following routines allow a user to get new database connections, free them
// for other code segments to use, or close all of them when the application has
// completed.
-wxDb WXDLLEXPORT *wxDbGetConnection(wxDbConnectInf *pDbConfig, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
-bool WXDLLEXPORT wxDbFreeConnection(wxDb *pDb);
-void WXDLLEXPORT wxDbCloseConnections(void);
-int WXDLLEXPORT wxDbConnectionsInUse(void);
+wxDb WXDLLIMPEXP_ODBC *wxDbGetConnection(wxDbConnectInf *pDbConfig, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
+bool WXDLLIMPEXP_ODBC wxDbFreeConnection(wxDb *pDb);
+void WXDLLIMPEXP_ODBC wxDbCloseConnections(void);
+int WXDLLIMPEXP_ODBC wxDbConnectionsInUse(void);
// Writes a message to the wxLog window (stdout usually) when an internal error
// situation occurs. This function only works in DEBUG builds
-const wxChar* WXDLLEXPORT wxDbLogExtendedErrorMsg(const wxChar *userText,
- wxDb *pDb,
- const wxChar *ErrFile,
- int ErrLine);
+const wxChar WXDLLIMPEXP_ODBC *
+wxDbLogExtendedErrorMsg(const wxChar *userText,
+ wxDb *pDb,
+ const wxChar *ErrFile,
+ int ErrLine);
// This function sets the sql log state for all open wxDb objects
-bool WXDLLEXPORT wxDbSqlLog(wxDbSqlLogState state, const wxString &filename = SQL_LOG_FILENAME);
+bool WXDLLIMPEXP_ODBC
+wxDbSqlLog(wxDbSqlLogState state, const wxString &filename = SQL_LOG_FILENAME);
#if 0
// for a list of available datasources. Call this routine
// the first time using SQL_FETCH_FIRST. Continue to call it
// using SQL_FETCH_NEXT until you've exhausted the list.
-bool WXDLLEXPORT wxDbGetDataSource(HENV henv, wxChar *Dsn, SWORD DsnMax, wxChar *DsDesc,
- SWORD DsDescMax, UWORD direction = SQL_FETCH_NEXT);
+bool WXDLLIMPEXP_ODBC
+wxDbGetDataSource(HENV henv, wxChar *Dsn, SWORD DsnMax, wxChar *DsDesc,
+ SWORD DsDescMax, UWORD direction = SQL_FETCH_NEXT);
// Change this to 0 to remove use of all deprecated functions
#endif
// Deprecated function names that are replaced by the function names listed above
-wxDB WXDLLEXPORT *GetDbConnection(DbStuff *pDbStuff, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
-bool WXDLLEXPORT FreeDbConnection(wxDB *pDb);
-void WXDLLEXPORT CloseDbConnections(void);
-int WXDLLEXPORT NumberDbConnectionsInUse(void);
+wxDB WXDLLIMPEXP_ODBC
+*GetDbConnection(DbStuff *pDbStuff, bool FwdOnlyCursors=(bool)wxODBC_FWD_ONLY_CURSORS);
+bool WXDLLIMPEXP_ODBC FreeDbConnection(wxDB *pDb);
+void WXDLLIMPEXP_ODBC CloseDbConnections(void);
+int WXDLLIMPEXP_ODBC NumberDbConnectionsInUse(void);
bool SqlLog(sqlLog state, const wxChar *filename = SQL_LOG_FILENAME);
-bool WXDLLEXPORT GetDataSource(HENV henv, char *Dsn, SWORD DsnMax, char *DsDesc, SWORD DsDescMax,
- UWORD direction = SQL_FETCH_NEXT);
+bool WXDLLIMPEXP_ODBC
+GetDataSource(HENV henv, char *Dsn, SWORD DsnMax, char *DsDesc, SWORD DsDescMax,
+ UWORD direction = SQL_FETCH_NEXT);
+
#endif // Deprecated structures/classes/functions
#endif // _WX_DB_H_