} wxDbTablePrivilegeInfo;
-/********** wxDbColFor Constructor **********/
-wxDbColFor::wxDbColFor()
+/********** wxDbConnectInf Constructor - form 1 **********/
+wxDbConnectInf::wxDbConnectInf()
{
- s_Field.Empty();
- int i;
- for (i=0; i<7; i++)
+ Initialize();
+} // Constructor
+
+
+/********** wxDbConnectInf Constructor - form 2 **********/
+wxDbConnectInf::wxDbConnectInf(HENV Henv, const wxString &Dsn, const wxString &UserID,
+ const wxString &Password, const wxString &DefaultDir,
+ const wxString &FileType, const wxString &Description)
+{
+ wxASSERT(Dsn.Length());
+
+ Initialize();
+
+ if (Henv)
+ SetHenv(Henv);
+ else
+ AllocHenv();
+
+ SetDsn(Dsn);
+ SetUserID(UserID);
+ SetPassword(Password);
+ SetDescription(Description);
+ SetFileType(FileType);
+ SetDefaultDir(DefaultDir);
+} // wxDbConnectInf Constructor
+
+
+wxDbConnectInf::~wxDbConnectInf()
+{
+ if (freeHenvOnDestroy)
{
- s_Format[i].Empty();
- s_Amount[i].Empty();
- i_Amount[i] = 0;
+ FreeHenv();
}
- i_Nation = 0; // 0=EU, 1=UK, 2=International, 3=US
- i_dbDataType = 0;
- i_sqlDataType = 0;
- Format(1,DB_DATA_TYPE_VARCHAR,0,0,0); // the Function that does the work
-} // wxDbColFor::wxDbColFor()
+} // wxDbConnectInf Destructor
-wxDbColFor::~wxDbColFor()
+
+/********** wxDbConnectInf::Initialize() **********/
+bool wxDbConnectInf::Initialize()
{
-} // wxDbColFor::~wxDbColFor()
+ freeHenvOnDestroy = FALSE;
+ Henv = 0;
+ Dsn[0] = 0;
+ Uid[0] = 0;
+ AuthStr[0] = 0;
+ Description.Empty();
+ FileType.Empty();
+ DefaultDir.Empty();
-/********** wxDbColInf Con / Destructor **********/
-wxDbColInf::wxDbColInf()
+ return TRUE;
+} // wxDbConnectInf::Initialize()
+
+
+/********** wxDbConnectInf::AllocHenv() **********/
+bool wxDbConnectInf::AllocHenv()
{
- catalog[0] = 0;
- schema[0] = 0;
- tableName[0] = 0;
- colName[0] = 0;
- sqlDataType = 0;
- typeName[0] = 0;
- columnSize = 0;
- bufferLength = 0;
- decimalDigits = 0;
- numPrecRadix = 0;
- nullable = 0;
- remarks[0] = 0;
- dbDataType = 0;
- PkCol = 0;
- PkTableName[0] = 0;
- FkCol = 0;
- FkTableName[0] = 0;
- pColFor = NULL;
-} // wxDbColInf::wxDbColFor()
+ // This is here to help trap if you are getting a new henv
+ // without releasing an existing henv
+ wxASSERT(!Henv);
+
+ // Initialize the ODBC Environment for Database Operations
+ if (SQLAllocEnv(&Henv) != SQL_SUCCESS)
+ {
+ wxLogDebug(wxT("A problem occured while trying to get a connection to the data source"));
+ return FALSE;
+ }
+ freeHenvOnDestroy = TRUE;
-wxDbColInf::~wxDbColInf()
+ return TRUE;
+} // wxDbConnectInf::AllocHenv()
+
+
+void wxDbConnectInf::FreeHenv()
{
- if (pColFor)
- delete pColFor;
- pColFor = NULL;
-} // wxDbColInf::~wxDbColInf()
+ wxASSERT(Henv);
+ if (Henv)
+ SQLFreeEnv(Henv);
-/********** wxDbTableInf Constructor ********/
-wxDbTableInf::wxDbTableInf()
+ Henv = 0;
+ freeHenvOnDestroy = FALSE;
+
+} // wxDbConnectInf::FreeHenv()
+
+
+void wxDbConnectInf::SetDsn(const wxString &dsn)
{
- tableName[0] = 0;
- tableType[0] = 0;
- tableRemarks[0] = 0;
- numCols = 0;
- pColInf = NULL;
-} // wxDbTableInf::wxDbTableFor()
+ wxASSERT(dsn.Length() < sizeof(Dsn));
+ wxStrcpy(Dsn,dsn);
+} // wxDbConnectInf::SetDsn()
-/********** wxDbTableInf Constructor ********/
-wxDbTableInf::~wxDbTableInf()
+
+void wxDbConnectInf::SetUserID(const wxString &uid)
{
- if (pColInf)
- delete [] pColInf;
- pColInf = NULL;
-} // wxDbTableInf::~wxDbTableInf()
+ wxASSERT(uid.Length() < sizeof(Uid));
+ wxStrcpy(Uid,uid);
+} // wxDbConnectInf::SetUserID()
-/********** wxDbInf Constructor *************/
-wxDbInf::wxDbInf()
+void wxDbConnectInf::SetPassword(const wxString &password)
{
- catalog[0] = 0;
- schema[0] = 0;
- numTables = 0;
- pTableInf = NULL;
-} // wxDbInf::wxDbFor()
+ wxASSERT(password.Length() < sizeof(AuthStr));
+
+ wxStrcpy(AuthStr,password);
+} // wxDbConnectInf::SetPassword()
-/********** wxDbInf Destructor *************/
-wxDbInf::~wxDbInf()
+
+/********** wxDbColFor Constructor **********/
+wxDbColFor::wxDbColFor()
{
- if (pTableInf)
- delete [] pTableInf;
- pTableInf = NULL;
-} // wxDbInf::~wxDbInf()
+ s_Field.Empty();
+ int i;
+ for (i=0; i<7; i++)
+ {
+ s_Format[i].Empty();
+ s_Amount[i].Empty();
+ i_Amount[i] = 0;
+ }
+ i_Nation = 0; // 0=EU, 1=UK, 2=International, 3=US
+ i_dbDataType = 0;
+ i_sqlDataType = 0;
+ Format(1,DB_DATA_TYPE_VARCHAR,0,0,0); // the Function that does the work
+} // wxDbColFor::wxDbColFor()
+wxDbColFor::~wxDbColFor()
+{
+} // wxDbColFor::~wxDbColFor()
+
+
+/********** wxDbColFor::Format() **********/
int wxDbColFor::Format(int Nation, int dbDataType, SWORD sqlDataType,
short columnSize, short decimalDigits)
{
} // wxDbColFor::Format()
+/********** wxDbColInf Constructor **********/
+wxDbColInf::wxDbColInf()
+{
+ catalog[0] = 0;
+ schema[0] = 0;
+ tableName[0] = 0;
+ colName[0] = 0;
+ sqlDataType = 0;
+ typeName[0] = 0;
+ columnSize = 0;
+ bufferLength = 0;
+ decimalDigits = 0;
+ numPrecRadix = 0;
+ nullable = 0;
+ remarks[0] = 0;
+ dbDataType = 0;
+ PkCol = 0;
+ PkTableName[0] = 0;
+ FkCol = 0;
+ FkTableName[0] = 0;
+ pColFor = NULL;
+} // wxDbColInf::wxDbColInf()
+
+
+/********** wxDbColInf Destructor ********/
+wxDbColInf::~wxDbColInf()
+{
+ if (pColFor)
+ delete pColFor;
+ pColFor = NULL;
+} // wxDbColInf::~wxDbColInf()
+
+
+/********** wxDbTableInf Constructor ********/
+wxDbTableInf::wxDbTableInf()
+{
+ tableName[0] = 0;
+ tableType[0] = 0;
+ tableRemarks[0] = 0;
+ numCols = 0;
+ pColInf = NULL;
+} // wxDbTableInf::wxDbTableInf()
+
+
+/********** wxDbTableInf Constructor ********/
+wxDbTableInf::~wxDbTableInf()
+{
+ if (pColInf)
+ delete [] pColInf;
+ pColInf = NULL;
+} // wxDbTableInf::~wxDbTableInf()
+
+
+/********** wxDbInf Constructor *************/
+wxDbInf::wxDbInf()
+{
+ catalog[0] = 0;
+ schema[0] = 0;
+ numTables = 0;
+ pTableInf = NULL;
+} // wxDbInf::wxDbFor()
+
+
+/********** wxDbInf Destructor *************/
+wxDbInf::~wxDbInf()
+{
+ if (pTableInf)
+ delete [] pTableInf;
+ pTableInf = NULL;
+} // wxDbInf::~wxDbInf()
+
+
/********** wxDb Constructors **********/
wxDb::wxDb(HENV &aHenv, bool FwdOnlyCursors)
{
// Copy the HENV into the db class
henv = aHenv;
fwdOnlyCursors = FwdOnlyCursors;
- initialize();
+ Initialize();
} // wxDb::wxDb()
-/********** PRIVATE! wxDb::initialize PRIVATE! **********/
-void wxDb::initialize()
+/********** wxDb::Initialize() **********/
+void wxDb::Initialize()
/*
* Private member function that sets all wxDb member variables to
* known values at creation of the wxDb
// Mark database as not open as of yet
dbIsOpen = FALSE;
-} // wxDb::initialize()
+} // wxDb::Initialize()
-/********** PRIVATE! wxDb::initialize PRIVATE! **********/
+/********** PRIVATE! wxDb::convertUserID PRIVATE! **********/
//
// NOTE: Return value from this function MUST be copied
// immediately, as the value is not good after
// Copy the error messages to a global variable
int i;
for (i = 0; i < DB_MAX_ERROR_HISTORY; i++)
- wxStrcpy(DBerrorList[i],errorList[i]);
+ wxStrcpy(DBerrorList[i], errorList[i]);
dbmsType = dbmsUNIDENTIFIED;
dbIsOpen = FALSE;
*/
wxString sqlStmt;
- sqlStmt.Printf(wxT("DROP VIEW %s"), viewName);
+ sqlStmt.Printf(wxT("DROP VIEW %s"), viewName.c_str());
WriteSqlLog(sqlStmt);
{
wxString dbName;
if (tablePath.Length())
- dbName.Printf(wxT("%s/%s.dbf"),tablePath,tableName);
+ dbName.Printf(wxT("%s/%s.dbf"), tablePath.c_str(), tableName.c_str());
else
- dbName.Printf(wxT("%s.dbf"),tableName);
+ dbName.Printf(wxT("%s.dbf"), tableName.c_str());
bool exists;
exists = wxFileExists(dbName);
}
// create the SQL statement
- sqlStmt.Printf(wxT("ALTER TABLE %s %s %s %s"), tableName, alterSlashModify,
- columnName, dataTypeName);
+ sqlStmt.Printf(wxT("ALTER TABLE %s %s %s %s"), tableName.c_str(), alterSlashModify.c_str(),
+ columnName.c_str(), dataTypeName.c_str());
// For varchars only, append the size of the column
if (dataType == DB_DATA_TYPE_VARCHAR)
// name and must currently not be in use.
if (pList->Free &&
(pList->PtrDb->FwdOnlyCursors() == FwdOnlyCursors) &&
- (!wxStrcmp(pDbConfig->Dsn, pList->Dsn))) // Found a free connection
+ (!wxStrcmp(pDbConfig->GetDsn(), pList->Dsn))) // Found a free connection
{
pList->Free = FALSE;
return(pList->PtrDb);
}
- if (!wxStrcmp(pDbConfig->Dsn, pList->Dsn) &&
- !wxStrcmp(pDbConfig->Uid, pList->Uid) &&
- !wxStrcmp(pDbConfig->AuthStr, pList->AuthStr))
+ if (!wxStrcmp(pDbConfig->GetDsn(), pList->Dsn) &&
+ !wxStrcmp(pDbConfig->GetUserID(), pList->Uid) &&
+ !wxStrcmp(pDbConfig->GetPassword(), pList->AuthStr))
matchingDbConnection = pList->PtrDb;
}
// Initialize new node in the linked list
pList->PtrNext = 0;
pList->Free = FALSE;
- pList->Dsn = pDbConfig->Dsn;
- pList->Uid = pDbConfig->Uid;
- pList->AuthStr = pDbConfig->AuthStr;
+ pList->Dsn = pDbConfig->GetDsn(); //glt - will this assignment work?
+ pList->Uid = pDbConfig->GetUserID();
+ pList->AuthStr = pDbConfig->GetPassword();
- pList->PtrDb = new wxDb(pDbConfig->Henv,FwdOnlyCursors);
+ pList->PtrDb = new wxDb((HENV)pDbConfig->GetHenvAddress(),FwdOnlyCursors);
bool opened = FALSE;
if (!matchingDbConnection)
- opened = pList->PtrDb->Open(pDbConfig->Dsn, pDbConfig->Uid, pDbConfig->AuthStr);
+ opened = pList->PtrDb->Open(pDbConfig->GetDsn(), pDbConfig->GetUserID(), pDbConfig->GetPassword());
else
opened = pList->PtrDb->Open(matchingDbConnection);