📄 databasemetadata.cpp.svn-base
字号:
bool DatabaseMetaData::supportsAlterTableWithAddColumn(){ return (this->_getNumeric32 (SQL_ALTER_TABLE)&SQL_AT_ADD_COLUMN)!=0;}bool DatabaseMetaData::supportsAlterTableWithDropColumn(){ return (this->_getNumeric32 (SQL_ALTER_TABLE)&SQL_AT_DROP_COLUMN)!=0;}ODBCXX_STRING DatabaseMetaData::getExtraNameCharacters(){ return this->_getStringInfo(SQL_SPECIAL_CHARACTERS);}ODBCXX_STRING DatabaseMetaData::getSearchStringEscape(){ return this->_getStringInfo(SQL_SEARCH_PATTERN_ESCAPE);}ODBCXX_STRING DatabaseMetaData::getNumericFunctions(){ static struct { int funcId; const ODBCXX_CHAR_TYPE* funcName; } fmap[] = { { SQL_FN_NUM_ABS, ODBCXX_STRING_CONST("ABS") }, { SQL_FN_NUM_ACOS, ODBCXX_STRING_CONST("ACOS") }, { SQL_FN_NUM_ASIN, ODBCXX_STRING_CONST("ASIN") }, { SQL_FN_NUM_ATAN, ODBCXX_STRING_CONST("ATAN") }, { SQL_FN_NUM_ATAN2, ODBCXX_STRING_CONST("ATAN2") }, { SQL_FN_NUM_CEILING, ODBCXX_STRING_CONST("CEILING") }, { SQL_FN_NUM_COS, ODBCXX_STRING_CONST("COS") }, { SQL_FN_NUM_COT, ODBCXX_STRING_CONST("COT") }, { SQL_FN_NUM_DEGREES, ODBCXX_STRING_CONST("DEGREES") }, { SQL_FN_NUM_EXP, ODBCXX_STRING_CONST("EXP") }, { SQL_FN_NUM_FLOOR, ODBCXX_STRING_CONST("FLOOR") }, { SQL_FN_NUM_LOG, ODBCXX_STRING_CONST("LOG") }, { SQL_FN_NUM_LOG10, ODBCXX_STRING_CONST("LOG10") }, { SQL_FN_NUM_MOD, ODBCXX_STRING_CONST("MOD") }, { SQL_FN_NUM_PI, ODBCXX_STRING_CONST("PI") }, { SQL_FN_NUM_POWER, ODBCXX_STRING_CONST("POWER") }, { SQL_FN_NUM_RADIANS, ODBCXX_STRING_CONST("RADIANS") }, { SQL_FN_NUM_RAND, ODBCXX_STRING_CONST("RAND") }, { SQL_FN_NUM_ROUND, ODBCXX_STRING_CONST("ROUND") }, { SQL_FN_NUM_SIGN, ODBCXX_STRING_CONST("SIGN") }, { SQL_FN_NUM_SIN, ODBCXX_STRING_CONST("SIN") }, { SQL_FN_NUM_SQRT, ODBCXX_STRING_CONST("SQRT") }, { SQL_FN_NUM_TAN, ODBCXX_STRING_CONST("TAN") }, { SQL_FN_NUM_TRUNCATE, ODBCXX_STRING_CONST("TRUNCATE") }, { 0, NULL } }; SQLUINTEGER r=this->_getNumeric32 (SQL_NUMERIC_FUNCTIONS); ODBCXX_STRING ret=ODBCXX_STRING_CONST(""); for(int i=0; fmap[i].funcId>0; i++) { if(r&(fmap[i].funcId)) { if(ret.length()>0) { ret+=ODBCXX_STRING_CONST(","); } ret+=fmap[i].funcName; } } return ret;}ODBCXX_STRING DatabaseMetaData::getStringFunctions(){ static struct { int funcId; const ODBCXX_CHAR_TYPE* funcName; } fmap[] = {#if ODBCVER>=0x0300 { SQL_FN_STR_BIT_LENGTH, ODBCXX_STRING_CONST("BIT_LENGTH") }, { SQL_FN_STR_CHAR_LENGTH, ODBCXX_STRING_CONST("CHAR_LENGTH") }, { SQL_FN_STR_CHARACTER_LENGTH, ODBCXX_STRING_CONST("CHARACTER_LENGTH") }, { SQL_FN_STR_OCTET_LENGTH, ODBCXX_STRING_CONST("OCTET_LENGTH") }, { SQL_FN_STR_POSITION, ODBCXX_STRING_CONST("POSITION") },#endif { SQL_FN_STR_ASCII, ODBCXX_STRING_CONST("ASCII") }, { SQL_FN_STR_CHAR, ODBCXX_STRING_CONST("CHAR") }, { SQL_FN_STR_CONCAT, ODBCXX_STRING_CONST("CONCAT") }, { SQL_FN_STR_DIFFERENCE, ODBCXX_STRING_CONST("DIFFERENCE") }, { SQL_FN_STR_INSERT, ODBCXX_STRING_CONST("INSERT") }, { SQL_FN_STR_LCASE, ODBCXX_STRING_CONST("LCASE") }, { SQL_FN_STR_LEFT, ODBCXX_STRING_CONST("LEFT") }, { SQL_FN_STR_LENGTH, ODBCXX_STRING_CONST("LENGTH") }, { SQL_FN_STR_LOCATE, ODBCXX_STRING_CONST("LOCATE") }, { SQL_FN_STR_LOCATE_2, ODBCXX_STRING_CONST("LOCATE_2") }, { SQL_FN_STR_LTRIM, ODBCXX_STRING_CONST("LTRIM") }, { SQL_FN_STR_REPEAT, ODBCXX_STRING_CONST("REPEAT") }, { SQL_FN_STR_REPLACE, ODBCXX_STRING_CONST("REPLACE") }, { SQL_FN_STR_RIGHT, ODBCXX_STRING_CONST("RIGHT") }, { SQL_FN_STR_RTRIM, ODBCXX_STRING_CONST("RTRIM") }, { SQL_FN_STR_SOUNDEX, ODBCXX_STRING_CONST("SOUNDEX") }, { SQL_FN_STR_SPACE, ODBCXX_STRING_CONST("SPACE") }, { SQL_FN_STR_SUBSTRING, ODBCXX_STRING_CONST("SUBSTRING") }, { SQL_FN_STR_UCASE, ODBCXX_STRING_CONST("UCASE") }, { 0, NULL } }; SQLUINTEGER r=this->_getNumeric32 (SQL_STRING_FUNCTIONS); ODBCXX_STRING ret=ODBCXX_STRING_CONST(""); for(int i=0; fmap[i].funcId>0; i++) { if(r&(fmap[i].funcId)) { if(ret.length()>0) { ret+=ODBCXX_STRING_CONST(","); } ret+=fmap[i].funcName; } } return ret;}ODBCXX_STRING DatabaseMetaData::getSystemFunctions(){ static struct { int funcId; const ODBCXX_CHAR_TYPE* funcName; } fmap[] = { { SQL_FN_SYS_DBNAME, ODBCXX_STRING_CONST("DBNAME") }, { SQL_FN_SYS_IFNULL, ODBCXX_STRING_CONST("IFNULL") }, { SQL_FN_SYS_USERNAME, ODBCXX_STRING_CONST("USERNAME") }, { 0, NULL } }; SQLUINTEGER r=this->_getNumeric32 (SQL_SYSTEM_FUNCTIONS); ODBCXX_STRING ret=ODBCXX_STRING_CONST(""); for(int i=0; fmap[i].funcId>0; i++) { if(r&(fmap[i].funcId)) { if(ret.length()>0) { ret+=ODBCXX_STRING_CONST(","); } ret+=fmap[i].funcName; } } return ret;}ODBCXX_STRING DatabaseMetaData::getTimeDateFunctions(){ static struct { int funcId; const ODBCXX_CHAR_TYPE* funcName; } fmap[] = {#if ODBCVER>=0x0300 { SQL_FN_TD_CURRENT_DATE, ODBCXX_STRING_CONST("CURRENT_DATE") }, { SQL_FN_TD_CURRENT_TIME, ODBCXX_STRING_CONST("CURRENT_TIME") }, { SQL_FN_TD_CURRENT_TIMESTAMP, ODBCXX_STRING_CONST("CURRENT_TIMESTAMP") }, { SQL_FN_TD_EXTRACT, ODBCXX_STRING_CONST("EXTRACT") },#endif { SQL_FN_TD_CURDATE, ODBCXX_STRING_CONST("CURDATE") }, { SQL_FN_TD_CURTIME, ODBCXX_STRING_CONST("CURTIME") }, { SQL_FN_TD_DAYNAME, ODBCXX_STRING_CONST("DAYNAME") }, { SQL_FN_TD_DAYOFMONTH, ODBCXX_STRING_CONST("DAYOFMONTH") }, { SQL_FN_TD_DAYOFWEEK, ODBCXX_STRING_CONST("DAYOFWEEK") }, { SQL_FN_TD_DAYOFYEAR, ODBCXX_STRING_CONST("DAYOFYEAR") }, { SQL_FN_TD_HOUR, ODBCXX_STRING_CONST("HOUR") }, { SQL_FN_TD_MINUTE, ODBCXX_STRING_CONST("MINUTE") }, { SQL_FN_TD_MONTH, ODBCXX_STRING_CONST("MONTH") }, { SQL_FN_TD_MONTHNAME, ODBCXX_STRING_CONST("MONTHNAME") }, { SQL_FN_TD_NOW, ODBCXX_STRING_CONST("NOW") }, { SQL_FN_TD_QUARTER, ODBCXX_STRING_CONST("QUARTER") }, { SQL_FN_TD_SECOND, ODBCXX_STRING_CONST("SECOND") }, { SQL_FN_TD_TIMESTAMPADD, ODBCXX_STRING_CONST("TIMESTAMPADD") }, { SQL_FN_TD_TIMESTAMPDIFF, ODBCXX_STRING_CONST("TIMESTAMPDIFF") }, { SQL_FN_TD_WEEK, ODBCXX_STRING_CONST("WEEK") }, { SQL_FN_TD_YEAR, ODBCXX_STRING_CONST("YEAR") }, { 0, NULL } }; SQLUINTEGER r=this->_getNumeric32 (SQL_TIMEDATE_FUNCTIONS); ODBCXX_STRING ret=ODBCXX_STRING_CONST(""); for(int i=0; fmap[i].funcId>0; i++) { if(r&(fmap[i].funcId)) { if(ret.length()>0) { ret+=ODBCXX_STRING_CONST(","); } ret+=fmap[i].funcName; } } return ret;}bool DatabaseMetaData::supportsCatalogsInDataManipulation(){ return (this->_getNumeric32 (ODBC3_C(SQL_CATALOG_USAGE, SQL_QUALIFIER_USAGE)) &ODBC3_C(SQL_CU_DML_STATEMENTS, SQL_QU_DML_STATEMENTS))!=0;}bool DatabaseMetaData::supportsCatalogsInProcedureCalls(){ return (this->_getNumeric32 (ODBC3_C(SQL_CATALOG_USAGE, SQL_QUALIFIER_USAGE)) &ODBC3_C(SQL_CU_PROCEDURE_INVOCATION, SQL_QU_PROCEDURE_INVOCATION))!=0;}bool DatabaseMetaData::supportsCatalogsInTableDefinitions(){ return (this->_getNumeric32 (ODBC3_C(SQL_CATALOG_USAGE, SQL_QUALIFIER_USAGE)) &ODBC3_C(SQL_CU_TABLE_DEFINITION, SQL_QU_TABLE_DEFINITION))!=0;}bool DatabaseMetaData::supportsCatalogsInIndexDefinitions(){ return (this->_getNumeric32 (ODBC3_C(SQL_CATALOG_USAGE, SQL_QUALIFIER_USAGE)) &ODBC3_C(SQL_CU_INDEX_DEFINITION, SQL_QU_INDEX_DEFINITION))!=0;}bool DatabaseMetaData::supportsCatalogsInPrivilegeDefinitions(){ return (this->_getNumeric32 (ODBC3_C(SQL_CATALOG_USAGE, SQL_QUALIFIER_USAGE)) &ODBC3_C(SQL_CU_PRIVILEGE_DEFINITION, SQL_QU_PRIVILEGE_DEFINITION))!=0;}bool DatabaseMetaData::supportsSchemasInDataManipulation(){ return (this->_getNumeric32 (ODBC3_C(SQL_SCHEMA_USAGE, SQL_OWNER_USAGE)) &ODBC3_C(SQL_SU_DML_STATEMENTS, SQL_OU_DML_STATEMENTS))!=0;}bool DatabaseMetaData::supportsSchemasInProcedureCalls(){ return (this->_getNumeric32 (ODBC3_C(SQL_SCHEMA_USAGE, SQL_OWNER_USAGE)) &ODBC3_C(SQL_SU_PROCEDURE_INVOCATION, SQL_OU_PROCEDURE_INVOCATION))!=0;}bool DatabaseMetaData::supportsSchemasInTableDefinitions(){ return (this->_getNumeric32 (ODBC3_C(SQL_SCHEMA_USAGE, SQL_OWNER_USAGE)) &ODBC3_C(SQL_SU_TABLE_DEFINITION, SQL_OU_TABLE_DEFINITION))!=0;}bool DatabaseMetaData::supportsSchemasInIndexDefinitions(){ return (this->_getNumeric32 (ODBC3_C(SQL_SCHEMA_USAGE, SQL_OWNER_USAGE)) &ODBC3_C(SQL_SU_INDEX_DEFINITION, SQL_OU_INDEX_DEFINITION))!=0;}bool DatabaseMetaData::supportsSchemasInPrivilegeDefinitions(){ return (this->_getNumeric32 (ODBC3_C(SQL_SCHEMA_USAGE, SQL_OWNER_USAGE)) &ODBC3_C(SQL_SU_PRIVILEGE_DEFINITION, SQL_OU_PRIVILEGE_DEFINITION))!=0;}bool DatabaseMetaData::supportsGroupBy(){ return this->_getNumeric16 (SQL_GROUP_BY)!=SQL_GB_NOT_SUPPORTED;}bool DatabaseMetaData::supportsGroupByUnrelated(){ SQLUSMALLINT r=this->_getNumeric16 (SQL_GROUP_BY); return r==SQL_GB_NO_RELATION;}bool DatabaseMetaData::supportsGroupByBeyondSelect(){ SQLUSMALLINT r=this->_getNumeric16 (SQL_GROUP_BY); return r==SQL_GB_GROUP_BY_CONTAINS_SELECT;}bool DatabaseMetaData::supportsUnion(){ return (this->_getNumeric32 (SQL_UNION)&SQL_U_UNION)!=0;}bool DatabaseMetaData::supportsUnionAll(){ return (this->_getNumeric32 (SQL_UNION)&(SQL_U_UNION | SQL_U_UNION_ALL))!=0;}bool DatabaseMetaData::supportsOuterJoins(){ return (this->_getNumeric32 (SQL_OJ_CAPABILITIES)& (SQL_OJ_LEFT | SQL_OJ_RIGHT | SQL_OJ_FULL | SQL_OJ_NESTED))!=0;}bool DatabaseMetaData::supportsFullOuterJoins(){ return (this->_getNumeric32 (SQL_OJ_CAPABILITIES)&(SQL_OJ_FULL | SQL_OJ_NESTED))!=0;}bool DatabaseMetaData::supportsLimitedOuterJoins(){ return this->supportsFullOuterJoins() || this->supportsOuterJoins();}bool DatabaseMetaData::usesLocalFilePerTable(){ return this->_getNumeric16 (SQL_FILE_USAGE)==SQL_FILE_TABLE;}bool DatabaseMetaData::usesLocalFiles(){ return this->_getNumeric16 (SQL_FILE_USAGE)!=SQL_FILE_NOT_SUPPORTED;}bool DatabaseMetaData::nullsAreSortedHigh(){ return this->_getNumeric16 (SQL_NULL_COLLATION)==SQL_NC_HIGH;}bool DatabaseMetaData::nullsAreSortedLow(){ return this->_getNumeric16 (SQL_NULL_COLLATION)==SQL_NC_LOW;}bool DatabaseMetaData::nullsAreSortedAtStart(){ return this->_getNumeric16 (SQL_NULL_COLLATION)==SQL_NC_START;}bool DatabaseMetaData::nullsAreSortedAtEnd(){ return this->_getNumeric16 (SQL_NULL_COLLATION)==SQL_NC_END;}bool DatabaseMetaData::allProceduresAreCallable(){ return this->_getStringInfo(SQL_ACCESSIBLE_PROCEDURES)==ODBCXX_STRING_CONST("Y");}bool DatabaseMetaData::allTablesAreSelectable(){ return this->_getStringInfo(SQL_ACCESSIBLE_TABLES)==ODBCXX_STRING_CONST("Y");}bool DatabaseMetaData::isReadOnly(){ return this->_getStringInfo(SQL_DATA_SOURCE_READ_ONLY)==ODBCXX_STRING_CONST("Y");}bool DatabaseMetaData::supportsTableCorrelationNames(){ return this->_getNumeric16 (SQL_CORRELATION_NAME)!=SQL_CN_NONE;}bool DatabaseMetaData::supportsCorrelatedSubqueries(){ return (this->_getNumeric32 (SQL_SUBQUERIES)&SQL_SQ_CORRELATED_SUBQUERIES)!=0;}bool DatabaseMetaData::supportsSubqueriesInComparisons(){ return (this->_getNumeric32 (SQL_SUBQUERIES)&SQL_SQ_COMPARISON)!=0;}bool DatabaseMetaData::supportsSubqueriesInExists(){ return (this->_getNumeric32 (SQL_SUBQUERIES)&SQL_SQ_EXISTS)!=0;}bool DatabaseMetaData::supportsSubqueriesInIns(){ return (this->_getNumeric32 (SQL_SUBQUERIES)&SQL_SQ_IN)!=0;}bool DatabaseMetaData::supportsSubqueriesInQuantifieds(){ return (this->_getNumeric32 (SQL_SUBQUERIES)&SQL_SQ_QUANTIFIED)!=0;}bool DatabaseMetaData::supportsExpressionsInOrderBy(){ return this->_getStringInfo(SQL_EXPRESSIONS_IN_ORDERBY)==ODBCXX_STRING_CONST("Y");}bool DatabaseMetaData::supportsLikeEscapeClause(){ return this->_getStringInfo(SQL_LIKE_ESCAPE_CLAUSE)==ODBCXX_STRING_CONST("Y");}bool DatabaseMetaData::supportsMultipleResultSets(){ return this->_getStringInfo(SQL_MULT_RESULT_SETS)==ODBCXX_STRING_CONST("Y");}bool DatabaseMetaData::supportsNonNullableColumns(){ return this->_getNumeric16 (SQL_NON_NULLABLE_COLUMNS)==SQL_NNC_NON_NULL;}bool DatabaseMetaData::supportsMinimumSQLGrammar(){ return true;}bool DatabaseMetaData::supportsCoreSQLGrammar(){ return this->_getNumeric16 (SQL_ODBC_SQL_CONFORMANCE)!=SQL_OSC_MINIMUM;}bool DatabaseMetaData::supportsExtendedSQLGrammar(){ return this->_getNumeric16 (SQL_ODBC_SQL_CONFORMANCE)==SQL_OSC_EXTENDED;}bool DatabaseMetaData::supportsANSI92EntryLevelSQL(){ return ODBC3_DC((this->_getNumeric32 (SQL_SQL_CONFORMANCE)&SQL_SC_SQL92_ENTRY)!=0, false);}bool DatabaseMetaData::supportsANSI92FullSQL(){ return ODBC3_DC((this->_getNumeric32 (SQL_SQL_CONFORMANCE)&SQL_SC_SQL92_FULL)!=0, false);}bool DatabaseMetaData::supportsANSI92IntermediateSQL(){ return ODBC3_DC((this->_getNumeric32 (SQL_SQL_CONFORMANCE)&SQL_SC_SQL92_INTERMEDIATE)!=0, false);}intDatabaseMetaData::getMaxBinaryLiteralLength(){ return this->_getNumeric32 (SQL_MAX_BINARY_LITERAL_LEN);}intDatabaseMetaData::getMaxCharLiteralLength(){ return this->_getNumeric32 (SQL_MAX_CHAR_LITERAL_LEN);}intDatabaseMetaData::getMaxColumnNameLength(){ return this->_getNumeric16 (SQL_MAX_COLUMN_NAME_LEN);}intDatabaseMetaData::getMaxColumnsInGroupBy(){ return this->_getNumeric16 (SQL_MAX_COLUMNS_IN_GROUP_BY);}intDatabaseMetaData::getMaxColumnsInIndex(){ return this->_getNumeric16 (SQL_MAX_COLUMNS_IN_INDEX);}intDatabaseMetaData::getMaxColumnsInOrderBy(){ return this->_getNumeric16 (SQL_MAX_COLUMNS_IN_ORDER_BY);}intDatabaseMetaData::getMaxColumnsInSelect(){ return this->_getNumeric16 (SQL_MAX_COLUMNS_IN_SELECT);}intDatabaseMetaData::getMaxColumnsInTable(){ return this->_getNumeric16 (SQL_MAX_COLUMNS_IN_TABLE);}intDatabaseMetaData::getMaxCursorNameLength(){ return this->_getNumeric16 (SQL_MAX_CURSOR_NAME_LEN);}intDatabaseMetaData::getMaxIndexLength(){ return this->_getNumeric32 (SQL_MAX_INDEX_SIZE);}intDatabaseMetaData::getMaxSchemaNameLength(){ return this->_getNumeric16 (ODBC3_C(SQL_MAX_SCHEMA_NAME_LEN,SQL_MAX_OWNER_NAME_LEN));}intDatabaseMetaData::getMaxProcedureNameLength(){ return this->_getNumeric16 (SQL_MAX_PROCEDURE_NAME_LEN);}intDatabaseMetaData::getMaxCatalogNameLength(){ return this->_getNumeric16 (ODBC3_C(SQL_MAX_CATALOG_NAME_LEN,SQL_MAX_QUALIFIER_NAME_LEN));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -