关于 Interbase BLOB 字段的 API 访问

spaceraider 2003-09-24 02:13:45
通过 API 访问 InterBase 的 BLOB 部分的内容怎么看也不明白,到底是怎么回事?

如: 1、写 BLOB

我在一个 SQL 中写 INSERT INTO mytb(f1, f2) VALUES (v1, v2)
其中 f2 是一个 BLOB 字段。

我这样操作:
XSQLDA* xsqlda = (XSQLDA*) malloc(XSQLDA_LENGTH(1));
xsqlda->sqln = 1;
xsqlda->version = SQLDA_VERSION1;

isc_dsql_allocate_statement(status, &db, &stmt);
isc_start_transaction(status, &trans, 1, &db, 0, NULL);
isc_dsql_prepare(status, &trans, &stmt, 0, (char*)sql_expr, 1, xsqlda);

为简单起见,我对得到的字段列表采用了一个 ISC_QUAD* blob_quad 来存储,
blob_quad = new ISC_QUAD[xsqlda->sqln];
即每一个字段都分配一个 blob_id,这样以后检索时可直接使用索引.

然后...怎么写上述表达中的 BLOB,我用

isc_blob_handle blob_handle = ISC_NULL;
ISC_QUAD* blob_id = &(blob_quad[i]);

isc_create_blob2(ib->status,
&db,
&trans,
&blob_handle,
blob_id,
0,
NULL);

isc_put_segment(status,
&blob_handle,
buffer_size,
buffer);

isc_close_blob(status, &blob_handle);

根本没法写进数据,恳请指导如何操作?

2、读 BLOB 同样的问题。


能不能给我一段代码示例,先表示感谢。

...全文
50 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CuteBit 2003-09-24
  • 打赏
  • 举报
回复
不能回答直接回答你的问题.
但我有点建议 :)
如果你使用 VCL 你没必要自己编写这部分代码,ibx/ibo 等控件已经帮你封装好这个接口了.
非要写这样的代码可以参考 ibx/ibo 的实现.

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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