gpt4 book ai didi

c - 如何使用 DB Library for C 从 SQL Server 列中检索大值?

转载 作者:行者123 更新时间:2023-12-04 08:33:19 30 4
gpt4 key购买 nike

我正在使用 FreeTDS 处理简单的 SELECT声明。
我的问题是我无法获得超过大列值的前 4096 个字节。
假设我们有一个这样的表:

CREATE TABLE tab (
largecol varbinary(max),
othercol int PRIMARY KEY
);
我的代码看起来像这样(简化并省略了错误检查):
#include <sybfront.h>
#include <sybdb.h>

int main ()
{
DBPROCESS *dbproc;
LOGINREC *login;
char *data;
DBINT len;

/* setup */
dbinit();
login = dblogin();

DBSETLUSER(login, "username");
DBSETLPWD(login, "password");
DBSETLAPP(login, "my_program");
DBSETLPACKET(login, 10000);
DBSETLNATLANG(login, "us_english");
DBSETLCHARSET(login, "UTF-8");

/* connect */
dbproc = dbopen(login, "hostname");
dbuse(dbproc, "dbname");

/* execute query */
dbcmd(dbproc, "SELECT largecol, othercol FROM tab");
dbsqlexec(dbproc);
dbresults(dbproc);

/* retrieve result */
dbnextrow(dbproc);
data = (char *)dbdata(dbproc, 1);
len = dbdatlen(dbproc, 1);

/* more processing */
}
现在不管 largecol中的数据有多大是,我在 data 中从来没有得到超过 4096 个字节的数据。和 len .
我必须完成这项工作的唯一线索是 dbreadtext 功能,但我不明白如何使用它。我得到的唯一信息是:

Use dbreadtext instead of dbnextrow to read SQLTEXT and SQLIMAGE values.


该函数不接受列号作为参数,所以我不知道如何使用它。它只能用于仅检索单个列的查询吗?
如何检索大列数据?

最佳答案

FreeTDS 有一个选项,text size ,可以在freetds.conf中设置:
见表 3.3,text size :
https://www.freetds.org/userguide/freetdsconf.html
试试看?

关于c - 如何使用 DB Library for C 从 SQL Server 列中检索大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64928336/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com