From: George Tasker Date: Sat, 3 Feb 2001 17:55:00 +0000 (+0000) Subject: More Unicode support added (though untested and still unfinished). X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/eacf9d88f92230fc3333a1a4f8994dd21f4cf620 More Unicode support added (though untested and still unfinished). Changed code to demonstrate the new wxDbConnectInf class ODBC environment handle now managed via the wxDbConnectInf class Condensed the use of multiple wxDbConnectInf instances to one and got rid of the bogus EXTERNs of the wxDbConnectInf that were causing so many headaches and mismatched usages of them. Other minor bug fixes - still have not foudn the reason for the crash on exit git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/demos/dbbrowse/browsedb.cpp b/demos/dbbrowse/browsedb.cpp index ef321bf2a6..2019f0927f 100644 --- a/demos/dbbrowse/browsedb.cpp +++ b/demos/dbbrowse/browsedb.cpp @@ -32,7 +32,7 @@ //---------------------------------------------------------------------------------------- // Global structure for holding ODBC connection information // - darf nur einmal im Projekte definiert werden ?? Extra Databasse Klasse ? -wxDbConnectInf ConnectInf; // Für DBase +wxDbConnectInf DbConnectInf; // Für DBase //---------------------------------------------------------------------------------------- extern WXDLLEXPORT_DATA(wxDbList*) PtrBegDbList; /* from db.cpp, used in getting back error results from db connections */ @@ -79,7 +79,7 @@ char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine) //---------------------------------------------------------------------------------------- BrowserDB::BrowserDB() { - Zeiger_auf_NULL(0); + PointerToNULL(0); ODBCSource = ""; // ODBC data source name (created with ODBC Administrator under Win95/NT) UserName = ""; // database username - must already exist in the data source Password = ""; // password database username @@ -90,7 +90,7 @@ BrowserDB::BrowserDB() //---------------------------------------------------------------------------------------- BrowserDB::~BrowserDB() { - Zeiger_auf_NULL(1); // Clean up Tables and Databases (Commit, Close und delete) + PointerToNULL(1); // Clean up Tables and Databases (Commit, Close and delete) } // BrowserDB destructor //---------------------------------------------------------------------------------------- @@ -113,16 +113,12 @@ bool BrowserDB::OnStartDB(int Quiet) if (db_BrowserDB != NULL) { if (!Quiet) - wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is allready open.")); + wxLogMessage(_("\n-I-> BrowserDB::OnStartDB() : DB is already open.")); return TRUE; } - // Initialize the ODBC Environment for Database Operations - if (SQLAllocEnv(&ConnectInf.Henv) != SQL_SUCCESS) - { - if (!Quiet) - wxLogMessage(_("\n-E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source")); - return FALSE; - } + + DbConnectInf.AllocHenv(); + //--------------------------------------------------------------------------------------- // Connect to datasource //--------------------------------------------------------------------------------------- @@ -147,21 +143,22 @@ bool BrowserDB::OnStartDB(int Quiet) if (OK) { //-------------------------------------------------------------------------------------- - ConnectInf.Dsn = ODBCSource; // ODBC data source name (created with ODBC Administrator under Win95/NT) - ConnectInf.Uid = UserName; // database username - must already exist in the data source - ConnectInf.AuthStr= Password; // password database username - db_BrowserDB = wxDbGetConnection(&ConnectInf); + DbConnectInf.SetDsn(ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT) + DbConnectInf.SetUserID(UserName); // database username - must already exist in the data source + DbConnectInf.SetPassword(Password); // password database username + db_BrowserDB = wxDbGetConnection(&DbConnectInf); // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str()); if (db_BrowserDB == NULL) { - ConnectInf.Dsn = ""; - ConnectInf.Uid = ""; - ConnectInf.AuthStr = ""; + DbConnectInf.SetDsn(wxT("")); + DbConnectInf.SetUserID(wxT("")); + DbConnectInf.SetPassword(wxT("")); if (!Quiet) { wxLogMessage(_("\n-E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source.\n\nCheck the name of your data source to verify it has been correctly entered/spelled.\n\nWith some databases, the user name and password must\nbe created with full rights to the table prior to making a connection\n(using tools provided by the database manufacturer)")); wxLogMessage(_("-I-> BrowserDB::OnStartDB(%s) : End - Time needed : %ld ms"),ODBCSource.c_str(),sw.Time()); } + DbConnectInf.FreeHenv(); return FALSE; } //-------------------------------------------------------------------------------------- @@ -175,7 +172,10 @@ bool BrowserDB::OnStartDB(int Quiet) return TRUE; } else + { + DbConnectInf.FreeHenv(); return FALSE; + } } //---------------------------------------------------------------------------------------- @@ -187,13 +187,9 @@ bool BrowserDB::OnCloseDB(int Quiet) { // db_BrowserDB->Close(); wxDbFreeConnection(db_BrowserDB); -/* - // Free Environment Handle that ODBC uses - if (SQLFreeEnv(&ConnectInf.Henv) != SQL_SUCCESS) - { - // Error freeing environment handle - } -*/ + + DbConnectInf.FreeHenv(); + db_BrowserDB = NULL; } if (!Quiet) @@ -422,7 +418,7 @@ wxDbColInf* BrowserDB::OnGetColumns(char *tableName, int numCols, int Quiet) } //---------------------------------------------------------------------------------------- -void BrowserDB::Zeiger_auf_NULL(int Art) +void BrowserDB::PointerToNULL(int Art) { if (Art == 1) // Löschen { diff --git a/demos/dbbrowse/browsedb.h b/demos/dbbrowse/browsedb.h index 155bfc157c..71d66f8f97 100644 --- a/demos/dbbrowse/browsedb.h +++ b/demos/dbbrowse/browsedb.h @@ -14,7 +14,7 @@ //---------------------------------------------------------------------------------------- // Global structure for holding ODBC connection information //---------------------------------------------------------------------------------------- -extern wxDbConnectInf DbConnectInf; +//extern wxDbConnectInf DbConnectInf; class MainDoc; //---------------------------------------------------------------------------------------- @@ -61,7 +61,7 @@ public: //--------------------------------------------------------------------------------------- BrowserDB(); ~BrowserDB(); - void Zeiger_auf_NULL(int Art); + void PointerToNULL(int Art); bool Initialize(int Quiet); //--------------------------------------------------------------------------------------- bool OnStartDB(int Quiet); diff --git a/demos/dbbrowse/doc.cpp b/demos/dbbrowse/doc.cpp index a78fc90847..6dab74dc1d 100644 --- a/demos/dbbrowse/doc.cpp +++ b/demos/dbbrowse/doc.cpp @@ -33,7 +33,7 @@ //---------------------------------------------------------------------------------------- //-- Some Global Vars for all Files (extern in ?.h needed) ------------------------------- // Global structure for holding ODBC connection information -wxDbConnectInf DbConnectInf; +extern wxDbConnectInf DbConnectInf; //---------------------------------------------------------------------------------------- wxConfigBase *p_ProgramCfg; // All Config and Path information @@ -159,11 +159,12 @@ bool MainDoc::OnInitODBC() int i = 0; //--------------------------------------------------------------------------------------- // Initialize the ODBC Environment for Database Operations - - if (SQLAllocEnv(&DbConnectInf.Henv) != SQL_SUCCESS) + + if (!DbConnectInf.AllocHenv()) { return FALSE; } + //--------------------------------------------------------------------------------------- const char sep = 3; // separator character used in string between DSN ans DsDesc wxStringList s_SortDSNList, s_SortDsDescList; @@ -172,7 +173,7 @@ bool MainDoc::OnInitODBC() // The key will be removed after sorting wxString KeyString; //--------------------------------------------------------------------------------------- - while(wxDbGetDataSource(DbConnectInf.Henv, Dsn, sizeof(Dsn), DsDesc, sizeof(DsDesc))) + while(wxDbGetDataSource(DbConnectInf.GetHenv(), Dsn, sizeof(Dsn), DsDesc, sizeof(DsDesc))) { i_DSN++; // How many Dsn have we ? KeyString.Printf("%s%c%s",Dsn, sep, DsDesc); @@ -212,10 +213,9 @@ bool MainDoc::OnInitODBC() (db_Br+i)->pDoc = this; (db_Br+i)->i_Which = i; } - if (SQLFreeEnv(DbConnectInf.Henv) != SQL_SUCCESS) // BJO20000125 / MJ10777.20000309 : no & - { - // Error freeing environment handle - } + + DbConnectInf.FreeHenv(); + delete [] s_SortDSN; delete [] s_SortDsDesc; //--------------------------------------------------------------------------------------- diff --git a/demos/dbbrowse/doc.h b/demos/dbbrowse/doc.h index 3fbb111033..c3dd92d1d2 100644 --- a/demos/dbbrowse/doc.h +++ b/demos/dbbrowse/doc.h @@ -22,7 +22,7 @@ public: //---------------------------------------------------------------------------------------- // Global structure for holding ODBC connection information -extern wxDbConnectInf DbConnectInf; +//extern wxDbConnectInf DbConnectInf; //---------------------------------------------------------------------------------------- extern wxConfigBase *p_ProgramCfg; // All Config and Path information