]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/dbtable.cpp
merged 2 overloaded functions into a single membersections
[wxWidgets.git] / src / common / dbtable.cpp
index e11ff656029e1318cb77428e970aa5ddffed0e28..384310ce8c49da69c8b04fc7c3073671d7921a2b 100644 (file)
@@ -528,15 +528,16 @@ bool wxDbTable::bindUpdateParams(void)
 /********** wxDbTable::bindCols() **********/
 bool wxDbTable::bindCols(HSTMT cursor)
 {
+    static SDWORD cb;
+
     // Bind each column of the table to a memory address for fetching data
     UWORD i;
     for (i = 0; i < noCols; i++)
     {
+        cb = colDefs[i].CbValue;
         if (SQLBindCol(cursor, (UWORD)(i+1), colDefs[i].SqlCtype, (UCHAR*) colDefs[i].PtrDataObj,
-                       colDefs[i].SzDataObj, &colDefs[i].CbValue ) != SQL_SUCCESS)
-        {
+                       colDefs[i].SzDataObj, &cb ) != SQL_SUCCESS)
           return (pDb->DispAllErrors(henv, hdbc, cursor));
-        }
     }
 
     // Completed successfully
@@ -1416,7 +1417,9 @@ bool wxDbTable::CreateTable(bool attemptDrop)
             break;
         }
     }
-    if (j && pDb->Dbms() != dbmsDBASE)  // Found a keyfield
+    if (j && (pDb->Dbms() != dbmsDBASE) 
+                 && (pDb->Dbms() != dbmsXBASE_SEQUITER)
+          )  // Found a keyfield
     {
         switch (pDb->Dbms())
         {
@@ -1648,6 +1651,26 @@ bool wxDbTable::CreateIndex(const wxString &idxName, bool unique, UWORD noIdxCol
         sqlStmt += pDb->SQLColumnName(pIdxDefs[i].ColName);
 //        sqlStmt += pIdxDefs[i].ColName;
 
+        // MySQL requires a key length on VARCHAR keys
+        if ( pDb->Dbms() == dbmsMY_SQL )
+        {
+            // Find the details on this column
+            int j;
+            for ( j = 0; j < noCols; ++j )
+            {
+                if ( wxStrcmp( pIdxDefs[i].ColName, colDefs[j].ColName ) == 0 )
+                {
+                    break;
+                }
+            }
+            if ( colDefs[j].DbDataType ==  DB_DATA_TYPE_VARCHAR)
+            {
+                wxString s;
+                s.Printf(wxT("(%d)"), colDefs[i].SzDataObj);
+                sqlStmt += s;
+            }
+        }
+        
         // Postgres and SQL Server 7 do not support the ASC/DESC keywords for index columns
         if (!((pDb->Dbms() == dbmsMS_SQL_SERVER) && (strncmp(pDb->dbInf.dbmsVer,"07",2)==0)) &&
             !(pDb->Dbms() == dbmsPOSTGRES))
@@ -1710,7 +1733,8 @@ bool wxDbTable::DropIndex(const wxString &idxName)
                        pDb->SQLTableName(idxName.c_str()).c_str(),
                        pDb->SQLTableName(tableName.c_str()).c_str());
     else if ((pDb->Dbms() == dbmsMS_SQL_SERVER) ||
-             (pDb->Dbms() == dbmsSYBASE_ASE))
+             (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());
@@ -2582,8 +2606,8 @@ wxVariant wxDbTable::GetCol(const int colNo) const
 
 void csstrncpyt(char *s, const char *t, int n)
 {
-    while ((*s++ = *t++) && --n)
-    {};
+    while ( (*s++ = *t++) != '\0' && --n )
+        ;
 
     *s = '\0';
 }