ODBC有一个函数SQLColumns()可以取得列的信息,我把MSDN上关于该函数的例子编译后发现取出的字段名(COLUMN_NAME)不是实际的字段名而是Field1,Field2,Field3这样的字符串,怎么才能得到实际的列名呢?
解决方案 »
- VC 拖动按钮不重叠
- 初学VC,对VC里面的类型转换感到不解,希望大家来帮帮我
- 新手急救:如何将16进制的字符串变换成int类型
- 我的类型为什么不能转换正确?
- 关于程序运行效率的问题
- 怎么用程序实现modem驱动的安装?
- 请问在VC++ 6.0 DEVELOP STUDIO中如何在一个C++(MFC EXE)项目文件中的类中添加一个ACTIVEX控件,如MSCOMM32,而不是在资源编辑器中。
- 请问如何通过指向成员函数的指针调用成员函数?
- 命名空间扩展复制粘贴问题(高手来)
- 急!急!急!This may be due to a corruption of the heap...
- ado执行存储过程在oracle下挂起:(
- 运行后无EXE
SQLHSTMTStatementHandle,
SQLUSMALLINTColumnNumber,
SQLUSMALLINTFieldIdentifier,
SQLPOINTERCharacterAttributePtr,
SQLSMALLINTBufferLength,
SQLSMALLINT *StringLengthPtr,
SQLPOINTERNumericAttributePtr);
CODBCFieldInfo fieldinfo ;
int col=0;//第几列
m_set.Open(CRecordset::forwardOnly,_T(m_SQL),CRecordset::readOnly);m_set.GetODBCFieldInfo((short) col,fieldinfo );fieldinfo.m_strName就是列名
用SQLColAttribute 在哪里设置表名啊?to 52001314(passenger)
_T(m_SQL)里面应该写什么?总列数怎么获得呢?
long nFields = rs.GetODBCFieldCount( );_T(m_SQL)就是sql语句,例如"select * from custmer"
上面的代码能运行吗?是不是还要用CDatabase连接数据库?
T(m_SQL)就是sql语句.要用CDatabase;
CDatabase g_database;
g_database.Open(.....);
CRecordset m_set(&g_database);
m_set.Open(CRecordset::forwardOnly,_T(m_SQL),CRecordset::readOnly);m_set.GetODBCFieldInfo((short) col,fieldinfo );
可参见52001314(passenger)的答案,另外在补充一点
m_SQl中最好加上一个Where子句 where 1=2 这样速度可以快点(因为没有满足条件的记录,减少系统的消费)
CDatabase g_database;
g_database.Open(_T( "myDB" ), FALSE,FALSE, _T( "ODBC;UID=my" ));
CRecordset m_set(&g_database);
CODBCFieldInfo fieldinfo ;
CString sql="select * from myTable where 1=2";
m_set.Open(CRecordset::forwardOnly,sql,CRecordset::readOnly);
long nFields = m_set.GetODBCFieldCount( );
for(int i=0;i<nFields;i++)
{
m_set.GetODBCFieldInfo((short) i,fieldinfo );
cout<<fieldinfo.m_strName<<endl;
}输出结果
Field1
Field2
Field3
Field4
Field5
Field6
Field7
Field8
Field9
Field10怎么回事啊?
不是中文的
我看SQLColumns()帮助中有这样一句话,但还是不明白
If the SQL_ATTR_METADATA_ID statement attribute is set to SQL_TRUE, ColumnName is treated as an identifier, and its case is not significant. If it is SQL_FALSE, ColumnName is a pattern value argument; it is treated literally, and its case is significant.
我的列名也是中文的,怎么就不行呢?
能不能发个能运行的简单源代码给我?
我的mail:[email protected]