在下面的代码示例中,对于 SQL Server 2012 表中类型为 nchar(10) 的列,我在
。我在头文件中的任何位置都找不到定义的 dataType
中返回了 -8
)-8
。在 sqlext.h
中,我可以找到定义的以下负值,但它停在 -7
处。
显然-8
表示nchar(x)
,但是它是否被定义了,如果是的话在哪里?
以下是定义 -1
到 -7
的 sqlext.h
的摘录:
#define SQL_LONGVARCHAR (-1)
#define SQL_BINARY (-2)
#define SQL_VARBINARY (-3)
#define SQL_LONGVARBINARY (-4)
#define SQL_BIGINT (-5)
#define SQL_TINYINT (-6)
#define SQL_BIT (-7)
这是我的代码。我关心的是对 SQLDescribeColA
的调用:
void ODBCulator::setColumns(ODBCResultSet& resultSet, SQLHANDLE hStmt) {
SQLSMALLINT numCols ;
SQLRETURN retCode = SQLNumResultCols( hStmt, &numCols );
SQLCHAR colName[1000] ;
SQLSMALLINT colNameLen, dataType, numDecimalDigits, allowsNullValues ;
SQLULEN columnSize ; SQL_BIT;
for( int i = 1 ; i <= numCols ; i++ ) {
retCode = SQLDescribeColA( hStmt, i, colName,
(sizeof(colName) / sizeof(colName[0])) - 1,
&colNameLen, &dataType, &columnSize,
&numDecimalDigits, &allowsNullValues );
resultSet.addColumn( i, colName, dataType, columnSize );
}
}
我使用的是 Visual Studio 2010 和 SQL Server 2012。
最佳答案
互联网上的许多来源都提供 -8
SQL_WCHAR
类型的值。
/*
* SQL datatypes - Unicode
*/
#define SQL_WCHAR (-8)
#define SQL_WVARCHAR (-9)
#define SQL_WLONGVARCHAR (-10)
例如,
https://www.opensource.apple.com/source/iodbc/iodbc-42.2/iodbc/include/sqlucode.h?txt
或
https://svn.apache.org/repos/asf/openoffice/trunk/main/unixODBC/inc/sqlucode.h
关于c - 当 SQLDescribeCol 返回 -8 时,它意味着什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873234/