X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/81b8978525aeccb6c9d4e2dbe869061ffb661138..848332140be2d53aea32d0702f4c0e06c149d24b:/src/common/dbtable.cpp diff --git a/src/common/dbtable.cpp b/src/common/dbtable.cpp index 65fe9e943d..0e781f19a3 100644 --- a/src/common/dbtable.cpp +++ b/src/common/dbtable.cpp @@ -16,10 +16,6 @@ // SYNOPSIS STOP */ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "dbtable.h" -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -417,11 +413,13 @@ void wxDbTable::setCbValueForColumn(int columnIndex) switch(colDefs[columnIndex].DbDataType) { case DB_DATA_TYPE_VARCHAR: + case DB_DATA_TYPE_MEMO: if (colDefs[columnIndex].Null) colDefs[columnIndex].CbValue = SQL_NULL_DATA; else colDefs[columnIndex].CbValue = SQL_NTS; break; + break; case DB_DATA_TYPE_INTEGER: if (colDefs[columnIndex].Null) colDefs[columnIndex].CbValue = SQL_NULL_DATA; @@ -488,6 +486,11 @@ bool wxDbTable::bindParams(bool forUpdate) precision = colDefs[i].SzDataObj; scale = 0; break; + case DB_DATA_TYPE_MEMO: + fSqlType = pDb->GetTypeInfMemo().FsqlType; + precision = colDefs[i].SzDataObj; + scale = 0; + break; case DB_DATA_TYPE_INTEGER: fSqlType = pDb->GetTypeInfInteger().FsqlType; precision = pDb->GetTypeInfInteger().Precision; @@ -560,7 +563,7 @@ bool wxDbTable::bindUpdateParams(void) /********** wxDbTable::bindCols() **********/ bool wxDbTable::bindCols(HSTMT cursor) { - static SDWORD cb; + static SQLLEN cb; // Bind each column of the table to a memory address for fetching data UWORD i; @@ -586,7 +589,7 @@ bool wxDbTable::getRec(UWORD fetchType) if (!pDb->FwdOnlyCursors()) { // Fetch the NEXT, PREV, FIRST or LAST record, depending on fetchType - UDWORD cRowsFetched; + SQLULEN cRowsFetched; UWORD rowStatus; retcode = SQLExtendedFetch(hstmt, fetchType, 0, &cRowsFetched, &rowStatus); @@ -1010,7 +1013,7 @@ void wxDbTable::BuildDeleteStmt(wxString &pSqlStmt, int typeOfDel, const wxStrin // e.g. DELETE FROM PARTS WHERE ROWID = '111.222.333' if (CanUpdateByROWID()) { - SDWORD cb; + SQLLEN cb; wxChar rowid[wxDB_ROWID_LEN+1]; // Get the ROWID value. If not successful retreiving the ROWID, @@ -1227,7 +1230,7 @@ void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpdate, const wxSt // e.g. UPDATE PARTS SET Col1 = ?, Col2 = ? WHERE ROWID = '111.222.333' if (CanUpdateByROWID()) { - SDWORD cb; + SQLLEN cb; wxChar rowid[wxDB_ROWID_LEN+1]; // Get the ROWID value. If not successful retreiving the ROWID, @@ -1308,7 +1311,7 @@ void wxDbTable::BuildWhereClause(wxString &pWhereClause, int typeOfWhere, switch(colDefs[colNumber].SqlCtype) { case SQL_C_CHAR: -#ifndef __UNIX__ +#ifdef SQL_C_WCHAR case SQL_C_WCHAR: #endif //case SQL_C_WXCHAR: SQL_C_WXCHAR is covered by either SQL_C_CHAR or SQL_C_WCHAR @@ -1418,6 +1421,9 @@ bool wxDbTable::CreateTable(bool attemptDrop) case DB_DATA_TYPE_VARCHAR: cout << pDb->GetTypeInfVarchar().TypeName << wxT("(") << (int)(colDefs[i].SzDataObj / sizeof(wxChar)) << wxT(")"); break; + case DB_DATA_TYPE_MEMO: + cout << pDb->GetTypeInfMemo().TypeName; + break; case DB_DATA_TYPE_INTEGER: cout << pDb->GetTypeInfInteger().TypeName; break; @@ -1459,6 +1465,9 @@ bool wxDbTable::CreateTable(bool attemptDrop) case DB_DATA_TYPE_VARCHAR: sqlStmt += pDb->GetTypeInfVarchar().TypeName; break; + case DB_DATA_TYPE_MEMO: + sqlStmt += pDb->GetTypeInfMemo().TypeName; + break; case DB_DATA_TYPE_INTEGER: sqlStmt += pDb->GetTypeInfInteger().TypeName; break; @@ -1853,6 +1862,7 @@ bool wxDbTable::DropIndex(const wxString &indexName) (pDb->Dbms() == dbmsSYBASE_ASE && !wxStrcmp(pDb->sqlState,wxT("37000"))) || (pDb->Dbms() == dbmsMS_SQL_SERVER && !wxStrcmp(pDb->sqlState,wxT("S1000"))) || (pDb->Dbms() == dbmsINTERBASE && !wxStrcmp(pDb->sqlState,wxT("S1000"))) || + (pDb->Dbms() == dbmsMAXDB && !wxStrcmp(pDb->sqlState,wxT("S1000"))) || (pDb->Dbms() == dbmsFIREBIRD && !wxStrcmp(pDb->sqlState,wxT("HY000"))) || (pDb->Dbms() == dbmsSYBASE_ASE && !wxStrcmp(pDb->sqlState,wxT("S0002"))) || // Base table not found (pDb->Dbms() == dbmsMY_SQL && !wxStrcmp(pDb->sqlState,wxT("42S12"))) || // tested by Christopher Ludwik Marino-Cebulski using v3.23.21beta @@ -2201,7 +2211,7 @@ void wxDbTable::ClearMemberVar(UWORD colNumber, bool setToNull) switch(colDefs[colNumber].SqlCtype) { case SQL_C_CHAR: -#ifndef __UNIX__ +#ifdef SQL_C_WCHAR case SQL_C_WCHAR: #endif //case SQL_C_WXCHAR: SQL_C_WXCHAR is covered by either SQL_C_CHAR or SQL_C_WCHAR @@ -2352,6 +2362,11 @@ wxDbColDataPtr* wxDbTable::SetColDefs(wxDbColInf *pColInfs, UWORD numCols) pColDataPtrs[index].SzDataObj = pColInfs[index].bufferSize+(1*sizeof(wxChar)); pColDataPtrs[index].SqlCtype = SQL_C_WXCHAR; break; + case DB_DATA_TYPE_MEMO: + pColDataPtrs[index].PtrDataObj = new wxChar[pColInfs[index].bufferSize+(1*sizeof(wxChar))]; + pColDataPtrs[index].SzDataObj = pColInfs[index].bufferSize+(1*sizeof(wxChar)); + pColDataPtrs[index].SqlCtype = SQL_C_WXCHAR; + break; case DB_DATA_TYPE_INTEGER: // Can be long or short if (pColInfs[index].bufferSize == sizeof(long)) @@ -2430,7 +2445,7 @@ ULONG wxDbTable::Count(const wxString &args) { ULONG count; wxString sqlStmt; - SDWORD cb; + SQLLEN cb; // Build a "SELECT COUNT(*) FROM queryTableName [WHERE whereClause]" SQL Statement sqlStmt = wxT("SELECT COUNT("); @@ -2521,7 +2536,7 @@ bool wxDbTable::Refresh(void) if (CanUpdateByROWID()) { - SDWORD cb; + SQLLEN cb; wxChar rowid[wxDB_ROWID_LEN+1]; // Get the ROWID value. If not successful retreiving the ROWID,