DB-Library编程疑难问题请教!

llanero 2000-04-20 11:54:00
我用VC1.52编写了DOS下的应用程序,使用db-library库,访问MS SQL SERVER 7.0 数据库服务器。
程序发送select语句到SQL SERVER执行,同样的语句在SQL SERVER上的Query Analyser上执行能返回多行结果,但如下的程序处理,无论SQL SERVER上的表格中有几条纪录,用dbnextrow处理的结果,第一次调用返回MORE_ROWS,第二次调用就返回NO_MORE_ROWS,始终只能处理一条纪录。
希望大虾能指点迷津!

unsigned char id;
unsigned char name[255];

dbfcmd(dbproc, "select id,name from id_name_table");

dbsqlexec(dbproc);

while ( (result_code=dbresults(dbproc)) != NO_MORE_RESULTS )
{
if ( (result_code == SUCCEED) )
{
dbbind(dbproc, 1, TINYBIND, (DBINT)0, &id );
dbbind(dbproc, 2, NTBSTRINGBIND, (DBINT)0, name );

index = 0;
while( dbnextrow(dbproc) != NO_MORE_ROWS )
{
id_name_table[index].id = id;
strcpy(id_name_table[index].name, name);
index++;
}
}
else
return;
}
...全文
143 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolstar 2001-06-22
  • 打赏
  • 举报
回复
O
llanero 2000-04-22
  • 打赏
  • 举报
回复
对于这个问题,我自己找到答案了,原来在初始化连接后发送了“set rowcount 1”的命令,所以返回的结果只有一个。
我又有一个后续问题向大家请教:
如果我在前面设置“set rowcout 10”,或其他一些值,或是不设,那么在用dbresults处理结果时,都不能返回SUCCEDD,监听帧的结果如下:
Error = More Data need to be returned
Error-Not enough data!!!
请问:以上问题的原因是什么?如果表中有多少条纪录,我客户端程序就想处理多少条纪录,应该怎么处理?

llanero 2000-04-21
  • 打赏
  • 举报
回复
我监听了服务器和客户机的消息帧,发现SQL SERVER发送给客户端应用程序的结果帧里只有一条纪录,不知是不是SQL SERVER上有什么限制?

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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