]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/tdb.tex
change wxTextValidator to use wxArrayString instead of wxStringList
[wxWidgets.git] / docs / latex / wx / tdb.tex
index 5936f9b3845cd0d8abf6e6b8876a9c6e78bc38b7..9319c7d77542a76ffe00d4607932d62640056d31 100644 (file)
@@ -1,6 +1,6 @@
 \section{Database classes overview}\label{odbcoverview}
 
 \section{Database classes overview}\label{odbcoverview}
 
-Following is a detailed overview of how to use the wxWindows ODBC classes - \helpref{wxDb}{wxdb} 
+Following is a detailed overview of how to use the wxWidgets ODBC classes - \helpref{wxDb}{wxdb} 
 and \helpref{wxDbTable}{wxdbtable} and their associated functions. These are 
 the ODBC classes donated by Remstar International, and are collectively 
 referred to herein as the wxODBC classes.
 and \helpref{wxDbTable}{wxdbtable} and their associated functions. These are 
 the ODBC classes donated by Remstar International, and are collectively 
 referred to herein as the wxODBC classes.
@@ -25,18 +25,20 @@ software with these classes, but at the time of the writing of this document,
 users have successfully used the classes with the following datasources:
 
 \begin{itemize}\itemsep=0pt
 users have successfully used the classes with the following datasources:
 
 \begin{itemize}\itemsep=0pt
-\item Oracle (v7, v8, v8i)
-\item Sybase (ASA and ASE)
-\item MS SQL Server (v7 - minimal testing)
-\item MS Access (97 and 2000)
-\item MySQL
+\item DB2
 \item DBase (IV, V)**
 \item DBase (IV, V)**
-\item PostgreSQL
+\item Firebird
 \item INFORMIX
 \item INFORMIX
-\item VIRTUOSO
-\item DB2
 \item Interbase
 \item Interbase
+\item MS SQL Server (v7 - minimal testing)
+\item MS Access (97, 2000, 2002, and 2003)
+\item MySQL (2.x and 3.5 - use the 2.5x drivers though)
+\item Oracle (v7, v8, v8i)
 \item Pervasive SQL
 \item Pervasive SQL
+\item PostgreSQL
+\item Sybase (ASA and ASE)
+\item XBase Sequiter
+\item VIRTUOSO
 \end{itemize}
 
 An up-to-date list can be obtained by looking in the comments of the function 
 \end{itemize}
 
 An up-to-date list can be obtained by looking in the comments of the function 
@@ -152,7 +154,7 @@ returned.
 For each result set, a cursor is maintained (typically by the database) 
 which keeps track of where in the result set the user currently is. 
 Depending on the database, ODBC driver, and how you configured the 
 For each result set, a cursor is maintained (typically by the database) 
 which keeps track of where in the result set the user currently is. 
 Depending on the database, ODBC driver, and how you configured the 
-wxWindows ODBC settings in setup.h (see \helpref{wxODBC - Compiling}{wxodbccompiling}), cursors can be 
+wxWidgets ODBC settings in setup.h (see \helpref{wxODBC - Compiling}{wxodbccompiling}), cursors can be 
 either forward or backward scrolling. At a minimum, cursors must scroll 
 forward. For example, if a query resulted in a result set with 100 rows, 
 as the data is read by the client application, it will read row 1, then 2, 
 either forward or backward scrolling. At a minimum, cursors must scroll 
 forward. For example, if a query resulted in a result set with 100 rows, 
 as the data is read by the client application, it will read row 1, then 2, 
@@ -238,7 +240,7 @@ the datasource will only be available to the user who configured the DSN.
 
 Under Unix, iODBC is used for implementation of the ODBC API. To compile the 
 wxODBC classes, you must first obtain iODBC from \urlref{http://www.iodbc.org}{www.iodbc.org} and install it. 
 
 Under Unix, iODBC is used for implementation of the ODBC API. To compile the 
 wxODBC classes, you must first obtain iODBC from \urlref{http://www.iodbc.org}{www.iodbc.org} and install it. 
-(Note: wxWindows currently includes a version of iODBC.) Then you must create the file "~/.odbc.ini" (or optionally create 
+(Note: wxWidgets currently includes a version of iODBC.) Then you must create the file "~/.odbc.ini" (or optionally create 
 "/etc/odbc.ini" for access for all users on the system). This file contains 
 the settings for your system/datasource. Below is an example section of a 
 odbc.ini file for use with the "samples/db" sample program using MySQL:
 "/etc/odbc.ini" for access for all users on the system). This file contains 
 the settings for your system/datasource. Below is an example section of a 
 odbc.ini file for use with the "samples/db" sample program using MySQL:
@@ -257,7 +259,7 @@ odbc.ini file for use with the "samples/db" sample program using MySQL:
 
 \subsection{wxODBC - Compiling}\label{wxodbccompiling}
 
 
 \subsection{wxODBC - Compiling}\label{wxodbccompiling}
 
-The wxWindows setup.h file has several settings in it pertaining to compiling 
+The wxWidgets setup.h file has several settings in it pertaining to compiling 
 the wxODBC classes.
 
 \begin{twocollist}\itemsep=0pt
 the wxODBC classes.
 
 \begin{twocollist}\itemsep=0pt
@@ -270,10 +272,10 @@ only forward scrolling cursors, or forward and backward scrolling cursors
 (see the section in "WHERE TO START" on cursors for more information on 
 cursors). This default can be overridden by passing a second parameter to 
 either the \helpref{wxDbGetConnection}{wxdbfunctions} or 
 (see the section in "WHERE TO START" on cursors for more information on 
 cursors). This default can be overridden by passing a second parameter to 
 either the \helpref{wxDbGetConnection}{wxdbfunctions} or 
-\helpref{wxDb constructor}{wxdbconstr}. The default is 1.}
+\helpref{wxDb constructor}{wxdbctor}. The default is 1.}
 \twocolitem{wxODBC\_BACKWARD\_COMPATABILITY}{Between v2.0 and 2.2, massive 
 renaming efforts were done to the ODBC classes to get naming conventions 
 \twocolitem{wxODBC\_BACKWARD\_COMPATABILITY}{Between v2.0 and 2.2, massive 
 renaming efforts were done to the ODBC classes to get naming conventions 
-similar to those used throughout wxWindows, as well as to preface all wxODBC 
+similar to those used throughout wxWidgets, as well as to preface all wxODBC 
 classes names and functions with a wxDb preface. Because this renaming would 
 affect applications written using the v2.0 names, this compile-time directive 
 was added to allow those programs written for v2.0 to still compile using the 
 classes names and functions with a wxDb preface. Because this renaming would 
 affect applications written using the v2.0 names, this compile-time directive 
 was added to allow those programs written for v2.0 to still compile using the 
@@ -288,7 +290,7 @@ is 0.}
 
 You are required to include the "odbc32.lib" provided by your compiler vendor 
 in the list of external libraries to be linked in. If using the makefiles 
 
 You are required to include the "odbc32.lib" provided by your compiler vendor 
 in the list of external libraries to be linked in. If using the makefiles 
-supplied with wxWindows, this library should already be included for use with 
+supplied with wxWidgets, this library should already be included for use with 
 makefile.b32, makefile.vc, and makefile.g95. 
 
 \normalbox{MORE TO COME}
 makefile.b32, makefile.vc, and makefile.g95. 
 
 \normalbox{MORE TO COME}
@@ -329,7 +331,7 @@ Authorization string (password). A fourth piece of information, a default
 directory indicating where the data file is stored, is required for Text and 
 dBase drivers for ODBC.
 
 directory indicating where the data file is stored, is required for Text and 
 dBase drivers for ODBC.
 
-The wxWindows data class wxDbConnectInf exists for holding all of these 
+The wxWidgets data class wxDbConnectInf exists for holding all of these 
 values, plus some others that may be desired.
 
 The 'Henv' member is the environment handle used to access memory for use by the 
 values, plus some others that may be desired.
 
 The 'Henv' member is the environment handle used to access memory for use by the 
@@ -496,7 +498,7 @@ One final note on creating a connection. When a connection is created, it
 will default to only allowing cursor scrolling to be either forward only, 
 or both backward and forward scrolling. The default behavior is 
 determined by the setting {\tt wxODBC\_FWD\_ONLY\_CURSORS} in setup.h when you 
 will default to only allowing cursor scrolling to be either forward only, 
 or both backward and forward scrolling. The default behavior is 
 determined by the setting {\tt wxODBC\_FWD\_ONLY\_CURSORS} in setup.h when you 
-compile the wxWindows library. The library default is to only support 
+compile the wxWidgets library. The library default is to only support 
 forward scrolling cursors only, though this can be overridden by parameters 
 for wxDb() constructor or the \helpref{wxDbGetConnection}{wxdbfunctions} 
 function. All datasources and ODBC drivers must support forward scrolling 
 forward scrolling cursors only, though this can be overridden by parameters 
 for wxDb() constructor or the \helpref{wxDbGetConnection}{wxdbfunctions} 
 function. All datasources and ODBC drivers must support forward scrolling 
@@ -557,9 +559,9 @@ can specify anywhere from one column up to all columns in the table.
 
 \begin{verbatim}
     table->SetColDefs(0, "FIRST_NAME", DB_DATA_TYPE_VARCHAR, FirstName,
 
 \begin{verbatim}
     table->SetColDefs(0, "FIRST_NAME", DB_DATA_TYPE_VARCHAR, FirstName,
-                      SQL_C_CHAR, sizeof(FirstName), true, true);
+                      SQL_C_WXCHAR, sizeof(FirstName), true, true);
     table->SetColDefs(1, "LAST_NAME", DB_DATA_TYPE_VARCHAR, LastName,
     table->SetColDefs(1, "LAST_NAME", DB_DATA_TYPE_VARCHAR, LastName,
-                      SQL_C_CHAR, sizeof(LastName), true, true);
+                      SQL_C_WXCHAR, sizeof(LastName), true, true);
 \end{verbatim}
 
 Notice that column definitions start at index 0 and go up to one less than 
 \end{verbatim}
 
 Notice that column definitions start at index 0 and go up to one less than 
@@ -622,7 +624,7 @@ if SQL logging is turned on for the classes.
 
 To use the table and the definitions that are now set up, we must first 
 define what data we want the datasource to collect in to a result set, tell 
 
 To use the table and the definitions that are now set up, we must first 
 define what data we want the datasource to collect in to a result set, tell 
-it where to get the data from, and in what sequence we want the data returned.
+it where to get the data from, and in which sequence we want the data returned.
 
 \begin{verbatim}
     // the WHERE clause limits/specifies which rows in the table
 
 \begin{verbatim}
     // the WHERE clause limits/specifies which rows in the table
@@ -826,7 +828,7 @@ connections still using the handle.}
 
 \subsection{wxODBC - Known Issues}\label{wxodbcknownissues}
 
 
 \subsection{wxODBC - Known Issues}\label{wxodbcknownissues}
 
-As with creating wxWindows, writing the wxODBC classes was not the simple 
+As with creating wxWidgets, writing the wxODBC classes was not the simple 
 task of writing an application to run on a single type of computer system. 
 The classes need to be cross-platform for different operating systems, and 
 they also needed to take in to account different database manufacturers and 
 task of writing an application to run on a single type of computer system. 
 The classes need to be cross-platform for different operating systems, and 
 they also needed to take in to account different database manufacturers and 
@@ -895,7 +897,7 @@ functionality as the driver can emulate.
 \begin{itemize}\itemsep=0pt
 \item If a column is part of the Primary Key, the column cannot be NULL.
 \item Cannot support selecting for update [\helpref{wxDbTable::CanSelectForUpdate}{wxdbtablecanselectforupdate}]. Always returns false.
 \begin{itemize}\itemsep=0pt
 \item If a column is part of the Primary Key, the column cannot be NULL.
 \item Cannot support selecting for update [\helpref{wxDbTable::CanSelectForUpdate}{wxdbtablecanselectforupdate}]. Always returns false.
-\item Columns that are part of primary or secondary keys must be defined as being NOT NULL when they are created. Some code is added in \helpref{wxDbTable::CreateIndex}{wxdbtablecreateindex} to try to adjust the column definition if it is not defined correctly, but it is experimental (as of wxWindows v2.2.1)
+\item Columns that are part of primary or secondary keys must be defined as being NOT NULL when they are created. Some code is added in \helpref{wxDbTable::CreateIndex}{wxdbtablecreateindex} to try to adjust the column definition if it is not defined correctly, but it is experimental (as of wxWidgets v2.2.1)
 \item Does not support sub-queries in SQL statements
 \end{itemize}
 
 \item Does not support sub-queries in SQL statements
 \end{itemize}
 
@@ -912,9 +914,14 @@ functionality as the driver can emulate.
 
 {\bf UNICODE with wxODBC classes}
 
 
 {\bf UNICODE with wxODBC classes}
 
-The ODBC classes support for Unicode is yet in early experimental stage and
-hasn't been tested extensively. It might work for you or it might not: please
-report the bugs/problems you have encountered in the latter case.
+As of v2.6 of wxWidgets, the wxODBC classes now fully support the compilation 
+and use of the classes in a Unicode build of wxWidgets, assuming the compiler 
+and OS on which the program will be compiled/run is Unicode capable.
+
+The one major difference in writing code that can be compiled in either 
+unicode or non-unicode builds that is specific to the wxODBC classes is to 
+use the SQL\_C\_WXCHAR datatype for string columns rather than SQL\_C\_CHAR or 
+SQL\_C\_WCHAR.
 
 \subsection{wxODBC - Sample Code}\label{wxodbcsamplecode1}
 
 
 \subsection{wxODBC - Sample Code}\label{wxodbcsamplecode1}
 
@@ -1017,9 +1024,9 @@ table = new wxDbTable(db, tableName, numTableColumns, wxT(""),
 // returned back to the client.
 //
 table->SetColDefs(0, wxT("FIRST_NAME"), DB_DATA_TYPE_VARCHAR, FirstName,
 // returned back to the client.
 //
 table->SetColDefs(0, wxT("FIRST_NAME"), DB_DATA_TYPE_VARCHAR, FirstName,
-                SQL_C_CHAR, sizeof(FirstName), true, true);
+                SQL_C_WXCHAR, sizeof(FirstName), true, true);
 table->SetColDefs(1, wxT("LAST_NAME"), DB_DATA_TYPE_VARCHAR, LastName,
 table->SetColDefs(1, wxT("LAST_NAME"), DB_DATA_TYPE_VARCHAR, LastName,
-                SQL_C_CHAR, sizeof(LastName), true, true);
+                SQL_C_WXCHAR, sizeof(LastName), true, true);
 
 
 // -----------------------------------------------------------------------
 
 
 // -----------------------------------------------------------------------
@@ -1146,7 +1153,7 @@ examples.
 
 \helpref{Database classes overview}{odbcoverview}
 
 
 \helpref{Database classes overview}{odbcoverview}
 
-\subsubsection{Create}
+\subsubsection{Create}\label{odbccreateexample}
 
 Creates a table.
 
 
 Creates a table.
 
@@ -1162,7 +1169,7 @@ CREATE TABLE Book
  )
 \end{verbatim}
 
  )
 \end{verbatim}
 
-\subsubsection{Insert}
+\subsubsection{Insert}\label{odbcinsertexample}
 
 Inserts records into a table.
 
 
 Inserts records into a table.
 
@@ -1174,7 +1181,7 @@ INSERT INTO Book
   VALUES(5, 'HR', 'The Lark Ascending')
 \end{verbatim}
 
   VALUES(5, 'HR', 'The Lark Ascending')
 \end{verbatim}
 
-\subsubsection{Select}
+\subsubsection{Select}\label{odbcselectexample}
 
 The Select operation retrieves rows and columns from a table. The criteria
 for selection and the columns returned may be specified.
 
 The Select operation retrieves rows and columns from a table. The criteria
 for selection and the columns returned may be specified.
@@ -1209,7 +1216,7 @@ descending order, add DESC after the ORDER BY Title clause.
 
 Selects records where RetailPriceAmount conforms to the WHERE expression.
 
 
 Selects records where RetailPriceAmount conforms to the WHERE expression.
 
-\subsubsection{Update}
+\subsubsection{Update}\label{odbcupdateexample}
 
 Updates records in a table.
 
 
 Updates records in a table.