Accessor function to assign the user ID for this class instance.
-\section{\class{wxDbIdxDef}}\label{wxdbidxdef}
+\section{\class{wxDbIndexDef}}\label{wxdbIndexdef}
Used in creation of non-primary indexes. Currently there are no member
functions for this class.
\begin{itemize}\itemsep=0pt
\item \helpref{wxDbColDef}{wxdbcoldef}
\item \helpref{wxDbColDataPtr}{wxdbcoldataptr}
-\item \helpref{wxDbIdxDef}{wxdbidxdef}
+\item \helpref{wxDbIndexDef}{wxdbIndexdef}
\end{itemize}
\wxheading{Constants}
Constructs the full SQL statement that can be used to update all rows matching
the criteria in the pWhereClause.
-If typeOfUpd is DB\_UPD\_KEYFIELDS, then the current values in the bound columns
+If typeOfUpdate is DB\_UPD\_KEYFIELDS, then the current values in the bound columns
are used to determine which row(s) in the table are to be updated. The
exception to this is when a datasource supports ROW IDs (Oracle). The ROW ID
column is used for efficiency purposes when available.
\docparam{pSqlStmt}{Pointer to storage for the SQL statement retrieved. To be
sure you have adequate space allocated for the SQL statement, allocate
DB\_MAX\_STATEMENT\_LEN bytes.}
-\docparam{typeOfUpd}{The type of update statement being performed. Can be one
+\docparam{typeOfUpdate}{The type of update statement being performed. Can be one
of two values: DB\_UPD\_KEYFIELDS or DB\_UPD\_WHERE.}
-\docparam{pWhereClause}{{\it OPTIONAL}. If the typeOfUpd is DB\_UPD\_WHERE,
+\docparam{pWhereClause}{{\it OPTIONAL}. If the typeOfUpdate is DB\_UPD\_WHERE,
then you must also pass in a SQL WHERE clause in this argument. Default is "".}
\wxheading{Remarks}
\membersection{wxDbTable::CreateIndex}\label{wxdbtablecreateindex}
-\func{bool}{CreateIndex}{\param{const wxString \&}{idxName}, \param{bool }{unique},
-\param{UWORD }{noIdxCols}, \param{wxDbIdxDef *}{pIdxDefs},
+\func{bool}{CreateIndex}{\param{const wxString \&}{IndexName}, \param{bool }{unique},
+\param{UWORD }{numIndexColumns}, \param{wxDbIndexDef *}{pIndexDefs},
\param{bool }{attemptDrop=true}}
This member function allows you to create secondary (non primary) indexes on
\wxheading{Parameters}
-\docparam{idxName}{Name of the Index. Name must be unique within the table
+\docparam{IndexName}{Name of the Index. Name must be unique within the table
space of the datasource.}
\docparam{unique}{Indicates if this index is unique.}
-\docparam{noIdxCols}{Number of columns in the index.}
-\docparam{pIdxDefs}{A pointer to an array wxDbIdxDef structures. }
+\docparam{numIndexColumns}{Number of columns in the index.}
+\docparam{pIndexDefs}{A pointer to an array wxDbIndexDef structures. }
\docparam{attemptDrop}{{\it OPTIONAL}. Indicates if the function should try
to execute a \helpref{wxDbTable::DropIndex}{wxdbtabledropindex} on the index
name provided before trying to create the index name. Default is true.}
The first parameter, index name, must be unique and should be given a
meaningful name. Common practice is to include the table name as a prefix
in the index name (e.g. For table PARTS, you might want to call your index
-PARTS\_IDX1). This will allow you to easily view all
+PARTS\_Index1). This will allow you to easily view all
of the indexes defined for a given table grouped together alphabetically.
The second parameter indicates if the index is unique or not. Uniqueness
uniqueness.
In the third parameter, specify how many columns are in your index. This
-number must match the number of columns defined in the 'pIdxDefs' parameter.
+number must match the number of columns defined in the 'pIndexDefs' parameter.
The fourth parameter specifies which columns make up the index using the
-wxDbIdxDef structure. For each column in the index, you must specify two
+wxDbIndexDef structure. For each column in the index, you must specify two
things, the column name and the sort order (ascending / descending). See
-the example below to see how to build and pass in the wxDbIdxDef structure.
+the example below to see how to build and pass in the wxDbIndexDef structure.
The fifth parameter is provided to handle the differences in datasources as
to whether they will automatically overwrite existing indexes with the same
\begin{verbatim}
// Create a secondary index on the PARTS table
- wxDbIdxDef idxDef[2]; // 2 columns make up the index
+ wxDbIndexDef IndexDef[2]; // 2 columns make up the index
- wxStrcpy(idxDef[0].ColName, "PART_DESC"); // Column 1
- idxDef[0].Ascending = true;
+ wxStrcpy(IndexDef[0].ColName, "PART_DESC"); // Column 1
+ IndexDef[0].Ascending = true;
- wxStrcpy(idxDef[1].ColName, "SERIAL_NO"); // Column 2
- idxDef[1].Ascending = false;
+ wxStrcpy(IndexDef[1].ColName, "SERIAL_NO"); // Column 2
+ IndexDef[1].Ascending = false;
// Create a name for the index based on the table's name
wxString indexName;
- indexName.Printf("%s_IDX1",parts->GetTableName());
- parts->CreateIndex(indexName, true, 2, idxDef);
+ indexName.Printf("%s_Index1",parts->GetTableName());
+ parts->CreateIndex(indexName, true, 2, IndexDef);
\end{verbatim}
\membersection{wxDbTable::CreateTable}\label{wxdbtablecreatetable}
\membersection{wxDbTable::DropIndex}\label{wxdbtabledropindex}
-\func{bool}{DropIndex}{\param{const wxString \&}{idxName}}
+\func{bool}{DropIndex}{\param{const wxString \&}{IndexName}}
Allows an index on the associated table to be dropped (deleted) if the user
login has sufficient privileges to do so.
\wxheading{Parameters}
-\docparam{idxName}{Name of the index to be dropped.}
+\docparam{IndexName}{Name of the index to be dropped.}
\wxheading{Remarks}
-If the index specified in the 'idxName' parameter does not exist, an error
+If the index specified in the 'IndexName' parameter does not exist, an error
will be logged, and the function will return a result of false.
It is not necessary to call \helpref{wxDb::CommitTrans}{wxdbcommittrans}
\membersection{wxDbTable::SetColDefs}\label{wxdbtablesetcoldefs}
-\func{void}{SetColDefs}{\param{UWORD }{index}, \param{const wxString \&}{fieldName},
+\func{bool}{SetColDefs}{\param{UWORD }{index}, \param{const wxString \&}{fieldName},
\param{int }{dataType}, \param{void *}{pData}, \param{SWORD }{cType},
-\param{int }{size}, \param{bool }{keyField = false}, \param{bool }{upd = true},
-\param{bool }{insAllow = true}, \param{bool }{derivedCol = false}}
+\param{int }{size}, \param{bool }{keyField = false}, \param{bool }{updateable = true},
+\param{bool }{insertAllowed = true}, \param{bool }{derivedColumn = false}}
\func{wxDbColDataPtr *}{SetColDefs}{\param{wxDbColInf *}{colInfs}, \param{UWORD }{numCols}}
\docparam{size}{Maximum size in bytes of the {\it pData} object.}
\docparam{keyField}{{\it OPTIONAL}. Indicates if this column is part of the
primary index. Default is false.}
-\docparam{upd}{{\it OPTIONAL}. Are updates allowed on this column?
+\docparam{updateable}{{\it OPTIONAL}. Are updates allowed on this column?
Default is true.}
-\docparam{insAllow}{{\it OPTIONAL}. Inserts allowed on this column?
+\docparam{insertAllowed}{{\it OPTIONAL}. Inserts allowed on this column?
Default is true.}
-\docparam{derivedCol}{{\it OPTIONAL}. Is this a derived column (non-base
+\docparam{derivedColumn}{{\it OPTIONAL}. Is this a derived column (non-base
table column for query only)? Default is false.}
\docparam{colInfs}{Pointer to an array of wxDbColInf instances which contains
If {\it pData} is to hold a string of characters, be sure to include enough
space for the NULL terminator in pData and in the byte count of {\it size}.
+Using the first form of this function, if the column definition is not able
+to be created, a value of false is returned. If the specified index of the
+column exceeds the number of columns defined in the wxDbTable instance, an
+assert is thrown and logged (in debug builds) and a false is returned.
+
+A failure to create the column definition in the second form results in a
+value of NULL being returned.
+
Both forms of this function provide a shortcut for defining the columns in
your wxDbTable object. Use this function in any derived wxDbTable
constructor when describing the column/columns in the wxDbTable object.
bool Open(bool checkPrivileges=false, bool checkTableExists=true);
bool CreateTable(bool attemptDrop=true);
bool DropTable(void);
- bool CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCols,
- wxDbIdxDef *pIdxDefs, bool attemptDrop=true);
- bool DropIndex(const wxString &idxName);
+ bool CreateIndex(const wxString &indexName, bool unique, UWORD numIndexColumns,
+ wxDbIdxDef *pIndexDefs, bool attemptDrop=true);
+ bool DropIndex(const wxString &indexName);
// Accessors
void BuildDeleteStmt(wxString &pSqlStmt, int typeOfDel, const wxString &pWhereClause=wxEmptyString);
void BuildDeleteStmt(wxChar *pSqlStmt, int typeOfDel, const wxString &pWhereClause=wxEmptyString);
- void BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpd, const wxString &pWhereClause=wxEmptyString);
- void BuildUpdateStmt(wxChar *pSqlStmt, int typeOfUpd, const wxString &pWhereClause=wxEmptyString);
+ void BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpdate, const wxString &pWhereClause=wxEmptyString);
+ void BuildUpdateStmt(wxChar *pSqlStmt, int typeOfUpdate, const wxString &pWhereClause=wxEmptyString);
void BuildWhereClause(wxString &pWhereClause, int typeOfWhere, const wxString &qualTableName=wxEmptyString, bool useLikeComparison=false);
void BuildWhereClause(wxChar *pWhereClause, int typeOfWhere, const wxString &qualTableName=wxEmptyString, bool useLikeComparison=false);
{ BuildSelectStmt(pSqlStmt,typeOfSelect,distinct); }
void GetDeleteStmt(char *pSqlStmt, int typeOfDel, const char *pWhereClause = NULL)
{ BuildDeleteStmt(pSqlStmt,typeOfDel,pWhereClause); }
- void GetUpdateStmt(char *pSqlStmt, int typeOfUpd, const char *pWhereClause = NULL)
- { BuildUpdateStmt(pSqlStmt,typeOfUpd,pWhereClause); }
+ void GetUpdateStmt(char *pSqlStmt, int typeOfUpdate, const char *pWhereClause = NULL)
+ { BuildUpdateStmt(pSqlStmt,typeOfUpdate,pWhereClause); }
void GetWhereClause(char *pWhereClause, int typeOfWhere,
const char *qualTableName = NULL, bool useLikeComparison=false)
{ BuildWhereClause(pWhereClause,typeOfWhere,qualTableName,useLikeComparison); }
wxDbColDef *GetColDefs() { return colDefs; }
bool SetColDefs(UWORD index, const wxString &fieldName, int dataType,
void *pData, SWORD cType,
- int size, bool keyField = false, bool upd = true,
- bool insAllow = true, bool derivedCol = false);
+ int size, bool keyField = false, bool updateable = true,
+ bool insertAllowed = true, bool derivedColumn = false);
wxDbColDataPtr *SetColDefs(wxDbColInf *colInfs, UWORD numCols);
bool CloseCursor(HSTMT cursor);
/********** wxDbTable::BuildUpdateStmt() **********/
-void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpd, const wxString &pWhereClause)
+void wxDbTable::BuildUpdateStmt(wxString &pSqlStmt, int typeOfUpdate, const wxString &pWhereClause)
{
wxASSERT(!queryOnly);
if (queryOnly)
// Append the WHERE clause to the SQL UPDATE statement
pSqlStmt += wxT(" WHERE ");
- switch(typeOfUpd)
+ switch(typeOfUpdate)
{
case DB_UPD_KEYFIELDS:
// If the datasource supports the ROWID column, build
/***** DEPRECATED: use wxDbTable::BuildUpdateStmt(wxString &....) form *****/
-void wxDbTable::BuildUpdateStmt(wxChar *pSqlStmt, int typeOfUpd, const wxString &pWhereClause)
+void wxDbTable::BuildUpdateStmt(wxChar *pSqlStmt, int typeOfUpdate, const wxString &pWhereClause)
{
wxString tempSqlStmt;
- BuildUpdateStmt(tempSqlStmt, typeOfUpd, pWhereClause);
+ BuildUpdateStmt(tempSqlStmt, typeOfUpdate, pWhereClause);
wxStrcpy(pSqlStmt, tempSqlStmt);
} // BuildUpdateStmt()
/********** wxDbTable::CreateIndex() **********/
-bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCols,
- wxDbIdxDef *pIdxDefs, bool attemptDrop)
+bool wxDbTable::CreateIndex(const wxString &indexName, bool unique, UWORD numIndexColumns,
+ wxDbIdxDef *pIndexDefs, bool attemptDrop)
{
wxString sqlStmt;
// Drop the index first
- if (attemptDrop && !DropIndex(idxName))
+ if (attemptDrop && !DropIndex(indexName))
return false;
// MySQL (and possibly Sybase ASE?? - gt) require that any columns which are used as portions
wxString sqlStmt;
int i;
bool ok = true;
- for (i = 0; i < noIdxCols && ok; i++)
+ for (i = 0; i < numIndexColumns && ok; i++)
{
int j = 0;
bool found = false;
// this information
while (!found && (j < this->m_numCols))
{
- if (wxStrcmp(colDefs[j].ColName,pIdxDefs[i].ColName) == 0)
+ if (wxStrcmp(colDefs[j].ColName,pIndexDefs[i].ColName) == 0)
found = true;
if (!found)
j++;
if (found)
{
- ok = pDb->ModifyColumn(tableName, pIdxDefs[i].ColName,
+ ok = pDb->ModifyColumn(tableName, pIndexDefs[i].ColName,
colDefs[j].DbDataType, (int)(colDefs[j].SzDataObj / sizeof(wxChar)),
wxT("NOT NULL"));
sqlStmt += wxT("UNIQUE ");
sqlStmt += wxT("INDEX ");
- sqlStmt += pDb->SQLTableName(idxName);
+ sqlStmt += pDb->SQLTableName(indexName);
sqlStmt += wxT(" ON ");
sqlStmt += pDb->SQLTableName(tableName);
// Append list of columns making up index
int i;
- for (i = 0; i < noIdxCols; i++)
+ for (i = 0; i < numIndexColumns; i++)
{
- sqlStmt += pDb->SQLColumnName(pIdxDefs[i].ColName);
-// sqlStmt += pIdxDefs[i].ColName;
+ sqlStmt += pDb->SQLColumnName(pIndexDefs[i].ColName);
+// sqlStmt += pIndexDefs[i].ColName;
// MySQL requires a key length on VARCHAR keys
if ( pDb->Dbms() == dbmsMY_SQL )
int j;
for ( j = 0; j < m_numCols; ++j )
{
- if ( wxStrcmp( pIdxDefs[i].ColName, colDefs[j].ColName ) == 0 )
+ if ( wxStrcmp( pIndexDefs[i].ColName, colDefs[j].ColName ) == 0 )
{
break;
}
!(pDb->Dbms() == dbmsFIREBIRD) &&
!(pDb->Dbms() == dbmsPOSTGRES))
{
- if (pIdxDefs[i].Ascending)
+ if (pIndexDefs[i].Ascending)
sqlStmt += wxT(" ASC");
else
sqlStmt += wxT(" DESC");
}
else
- wxASSERT_MSG(pIdxDefs[i].Ascending, _T("Datasource does not support DESCending index columns"));
+ wxASSERT_MSG(pIndexDefs[i].Ascending, _T("Datasource does not support DESCending index columns"));
- if ((i + 1) < noIdxCols)
+ if ((i + 1) < numIndexColumns)
sqlStmt += wxT(",");
}
/********** wxDbTable::DropIndex() **********/
-bool wxDbTable::DropIndex(const wxString &idxName)
+bool wxDbTable::DropIndex(const wxString &indexName)
{
// NOTE: This function returns true if the Index does not exist, but
// only for identified databases. Code will need to be added
if (pDb->Dbms() == dbmsACCESS || pDb->Dbms() == dbmsMY_SQL ||
pDb->Dbms() == dbmsDBASE /*|| Paradox needs this syntax too when we add support*/)
sqlStmt.Printf(wxT("DROP INDEX %s ON %s"),
- pDb->SQLTableName(idxName.c_str()).c_str(),
+ pDb->SQLTableName(indexName.c_str()).c_str(),
pDb->SQLTableName(tableName.c_str()).c_str());
else if ((pDb->Dbms() == dbmsMS_SQL_SERVER) ||
(pDb->Dbms() == dbmsSYBASE_ASE) ||
(pDb->Dbms() == dbmsXBASE_SEQUITER))
sqlStmt.Printf(wxT("DROP INDEX %s.%s"),
pDb->SQLTableName(tableName.c_str()).c_str(),
- pDb->SQLTableName(idxName.c_str()).c_str());
+ pDb->SQLTableName(indexName.c_str()).c_str());
else
sqlStmt.Printf(wxT("DROP INDEX %s"),
- pDb->SQLTableName(idxName.c_str()).c_str());
+ pDb->SQLTableName(indexName.c_str()).c_str());
pDb->WriteSqlLog(sqlStmt);
/********** wxDbTable::SetColDefs() **********/
bool wxDbTable::SetColDefs(UWORD index, const wxString &fieldName, int dataType, void *pData,
SWORD cType, int size, bool keyField, bool updateable,
- bool insAllow, bool derivedCol)
+ bool insertAllowed, bool derivedColumn)
{
wxString tmpStr;
colDefs[index].SqlCtype = cType;
colDefs[index].SzDataObj = size; //TODO: glt ??? * sizeof(wxChar) ???
colDefs[index].KeyField = keyField;
- colDefs[index].DerivedCol = derivedCol;
+ colDefs[index].DerivedCol = derivedColumn;
// Derived columns by definition would NOT be "Insertable" or "Updateable"
- if (derivedCol)
+ if (derivedColumn)
{
colDefs[index].Updateable = false;
colDefs[index].InsertAllowed = false;
else
{
colDefs[index].Updateable = updateable;
- colDefs[index].InsertAllowed = insAllow;
+ colDefs[index].InsertAllowed = insertAllowed;
}
colDefs[index].Null = false;