我用SQLTables(hstmt,NULL,0,NULL,0,NULL,0,NULL,0),SQLFetch(hstmt)可得到的结果都为空?请高手指点。最好是有C#经验的兄台...先谢了。

project 2002-10-09 06:59:08
以下是所有步骤,所有的返回值均是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);
...全文
76 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
project 2002-10-10
  • 打赏
  • 举报
回复
SQLFetch(hstmt)循环了1000多次才返回SQL_NO_DATA(100).不知是什么原因!
无人问津吗?
project 2002-10-10
  • 打赏
  • 举报
回复
我怀疑是TargetValuePtr的数据类型的问题!可我能试的都试了!就是不行!
用string,在SQLFetch几次后,就会报“未将对象引用定义的对象实例”
用char[255]和StringBuilder[255],不报错,但返回都是“”;
根字符集有关系吗?
[DllImport("odbc32.dll",EntryPoint="SQLBindCol")]
public static extern SQLRETURN SQLBindCol(
IntPtr StatementHandle,//SQLHSTMT
SQLUSMALLINT ColumnNumber, //SQLUSMALLINT
SQLSMALLINT TargetType, //SQLSMALLINT
// StringBuilder TargetValuePtr, //SQLPOINTER
// char[] TargetValuePtr,
string TargetValuePtr,
SQLINTEGER BufferLength, //SQLINTEGER
ref int StrLen_or_Ind); //SQLLEN *

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧