+/********** wxDB::Dbms() **********/
+/*
+ * Be aware that not all database engines use the exact same syntax, and not
+ * every ODBC compliant database is compliant to the same level of compliancy.
+ * Some manufacturers support the minimum Level 1 compliancy, and others up
+ * through Level 3. Others support subsets of features for levels above 1.
+ *
+ * If you find an inconsistency between the wxDB class and a specific database
+ * engine, and an identifier to this section, and special handle the database in
+ * the area where behavior is non-conforming with the other databases.
+ *
+ *
+ * NOTES ABOUT ISSUES SPECIFIC TO EACH DATABASE ENGINE
+ * ---------------------------------------------------
+ *
+ * ORACLE
+ * - Currently the only database supported by the class to support VIEWS
+ *
+ * DBASE
+ * - Does not support the SQL_TIMESTAMP structure
+ * - Supports only one cursor and one connect (apparently? with Microsoft driver only?)
+ * - Does not automatically create the primary index if the 'keyField' param of SetColDef
+ * is TRUE. The user must create ALL indexes from their program.
+ * - Table names can only be 8 characters long
+ * - Column names can only be 10 characters long
+ *
+ * SYBASE (all)
+ * - To lock a record during QUERY functions, the reserved word 'HOLDLOCK' must be added
+ * after every table name involved in the query/join if that tables matching record(s)
+ * are to be locked
+ * - Ignores the keywords 'FOR UPDATE'. Use the HOLDLOCK functionality described above
+ *
+ * SYBASE (Enterprise)
+ * - If a column is part of the Primary Key, the column cannot be NULL
+ *
+ * MY_SQL
+ * - If a column is part of the Primary Key, the column cannot be NULL
+ * - Cannot support selecting for update [::CanSelectForUpdate()]. Always returns FALSE
+ *
+ * POSTGRES
+ * - Does not support the keywords 'ASC' or 'DESC' as of release v6.5.0
+ *
+ *
+ */
+DBMS wxDB::Dbms(void)
+{
+ wxChar baseName[25+1];
+
+ wxStrncpy(baseName,dbInf.dbmsName,25);
+ if (!wxStricmp(dbInf.dbmsName,"Adaptive Server Anywhere"))
+ return(dbmsSYBASE_ASA);
+ if (!wxStricmp(dbInf.dbmsName,"SQL Server")) // Sybase Adaptive Server
+ return(dbmsSYBASE_ASE);
+ if (!wxStricmp(dbInf.dbmsName,"Microsoft SQL Server"))
+ return(dbmsMS_SQL_SERVER);
+ if (!wxStricmp(dbInf.dbmsName,"MySQL"))
+ return(dbmsMY_SQL);
+ if (!wxStricmp(dbInf.dbmsName,"PostgreSQL")) // v6.5.0
+ return(dbmsPOSTGRES);
+
+ baseName[8] = 0;
+ if (!wxStricmp(baseName,"Informix"))
+ return(dbmsINFORMIX);
+
+ baseName[6] = 0;
+ if (!wxStricmp(baseName,"Oracle"))
+ return(dbmsORACLE);
+ if (!wxStricmp(dbInf.dbmsName,"ACCESS"))
+ return(dbmsACCESS);
+ if (!wxStricmp(dbInf.dbmsName,"MySQL"))
+ return(dbmsMY_SQL);
+
+ baseName[5] = 0;
+ if (!wxStricmp(baseName,"DBASE"))
+ return(dbmsDBASE);
+
+ return(dbmsUNIDENTIFIED);
+} // wxDB::Dbms()
+
+