我用SQLTables(hstmt,NULL,0,NULL,0,NULL,0,NULL,0),SQLFetch(hstmt)可得到的结果都为空?请高手指点。最好是有C#经验的兄台...先谢了。
以下是所有步骤,所有的返回值均是0(SQL_SUCCESS),可得到的数据都是空的。且,指定的oracle DSN中确实有数据。请各位大侠帮我想象办法。
注:我是在C#中自己导入的API并调用的。
IntPtr hevn = IntPtr.Zero;
IntPtr hdbc = IntPtr.Zero;
IntPtr hstmt = IntPtr.Zero;
//获得env
SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,ref hevn);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, ODBCApi.SQL_OV_ODBC3, 0);
//获得dbc
SQLAllocHandle(SQL_HANDLE_DBC,henv,ref hdbc);
//配置连接
ODBCApi.SQLConnect(hdbc,
"test_db", SQL_NTS,
"test", SQL_NTS, "123456", SQL_NTS);
//获得stmt
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, ref hstmt);
//取表
SQLTables(hstmt,NULL, 0, NULL, 0,NULL, 0,NULL, 0);
StringBuilder buffer3 = new StringBuilder(255);
int len = 0;
while(true)
{
vSqlReturn = SQLFetch(hstmt);
if(vSqlReturn = SQL_SUCCESS ||
vSqlReturn = SQL_SUCCESS_WITH_INFO)
{
vSqlReturn = SQLGetData(hstmt,3,SQL_C_CHAR,buffer3,255,ref len);
if(vSqlReturn == SQL_SUCCESS ||
vSqlReturn == SQL_SUCCESS_WITH_INFO)
{ListBox1.Items.Add();}
}
else
break;
}
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);