用dblibrary读取sybase数据库只能获取最多255个字节的数据?
时间:2006-12-22
来源:互联网
在linux AS3下装了个12.5的sybase(page size是8),c程序通过dblibrary库实现数据库的读写,但发现通过程序读取的数据最多只有255个字节(实际存储的远不止255),查看了资料没找出原因,望各位帮帮忙。
测试代码如下:
CODE:[Copy to clipboard]#include <stdio.h>
#include <sybfront.h>
#include <sybdb.h>
int main(argc, argv)
int argc;
char *argv[];
{
DBPROCESS *dbproc; /* Our connection with SQL Server. */
LOGINREC *login; /* Our login information. */
/* These are the variables used to store the returning data. */
RETCODE result_code;
DBCHAR name1[128];
DBCHAR des[3000];
/* Initialize DB-Library. */
if (dbinit() == FAIL)
exit(ERREXIT);
login = dblogin();
DBSETLUSER(login, "sa"
;
DBSETLPWD(login, "intelligence"
;
if ((dbproc = dbopen(login, "CHECKSERVER"
) == NULL)
{
printf("Could not connect to server!\n"
;
return(-1);
}
/* First, put the commands into the command buffer. */
dbcmd(dbproc, "select name, des from checkdb..test_tb"
;
dbcmd(dbproc, " where name = 'lijm' "
;
/* Send the commands to SQL Server and start execution. */
dbsqlexec(dbproc);
while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
{
if (result_code == SUCCEED)
{
/* Bind program variables. */
dbbind(dbproc, 1, NTBSTRINGBIND, (DBINT)0,
(BYTE DBFAR *)name1);
dbbind(dbproc, 2, NTBSTRINGBIND, (DBINT)0,
(BYTE DBFAR *)des);
/* Now print the rows. */
while (dbnextrow(dbproc) != NO_MORE_ROWS)
{
if ((DBCURCMD(dbproc) == 2)
&& (DBCURROW(dbproc) > 10))
continue;
printf("name: %s, description: %s",name1,des);
}
}
}
dbexit();
exit(STDEXIT);
}
测试代码如下:
CODE:[Copy to clipboard]#include <stdio.h>
#include <sybfront.h>
#include <sybdb.h>
int main(argc, argv)
int argc;
char *argv[];
{
DBPROCESS *dbproc; /* Our connection with SQL Server. */
LOGINREC *login; /* Our login information. */
/* These are the variables used to store the returning data. */
RETCODE result_code;
DBCHAR name1[128];
DBCHAR des[3000];
/* Initialize DB-Library. */
if (dbinit() == FAIL)
exit(ERREXIT);
login = dblogin();
DBSETLUSER(login, "sa"

DBSETLPWD(login, "intelligence"

if ((dbproc = dbopen(login, "CHECKSERVER"

{
printf("Could not connect to server!\n"

return(-1);
}
/* First, put the commands into the command buffer. */
dbcmd(dbproc, "select name, des from checkdb..test_tb"

dbcmd(dbproc, " where name = 'lijm' "

/* Send the commands to SQL Server and start execution. */
dbsqlexec(dbproc);
while ((result_code = dbresults(dbproc)) != NO_MORE_RESULTS)
{
if (result_code == SUCCEED)
{
/* Bind program variables. */
dbbind(dbproc, 1, NTBSTRINGBIND, (DBINT)0,
(BYTE DBFAR *)name1);
dbbind(dbproc, 2, NTBSTRINGBIND, (DBINT)0,
(BYTE DBFAR *)des);
/* Now print the rows. */
while (dbnextrow(dbproc) != NO_MORE_ROWS)
{
if ((DBCURCMD(dbproc) == 2)
&& (DBCURROW(dbproc) > 10))
continue;
printf("name: %s, description: %s",name1,des);
}
}
}
dbexit();
exit(STDEXIT);
}
作者: jianleon 发布时间: 2006-12-22
另外昨天在看《Open Client DB-Library C Reference Manual》时看到这句话:
“DB-Library provides source code compatibility for older Sybase
applications. Sybase encourages programmers to implement
applications with Client-Library or Embedded SQL.”
明显DB-Library是for旧版的Sybase,有没有可能DB-Library本身就只能支持select出最多255个字节的数据,而Client-Library就能支持更大的数据。
“DB-Library provides source code compatibility for older Sybase
applications. Sybase encourages programmers to implement
applications with Client-Library or Embedded SQL.”
明显DB-Library是for旧版的Sybase,有没有可能DB-Library本身就只能支持select出最多255个字节的数据,而Client-Library就能支持更大的数据。
作者: jianleon 发布时间: 2006-12-22
自己能独立解决问题最好不过了,恭喜喽主。
作者: Jerry1126_Gao 发布时间: 2010-09-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28