免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2721 | 回复: 1
打印 上一主题 下一主题

[原创]PostgreSQL ODBC大对象支持 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-12 15:25 |只看该作者 |倒序浏览
这些天,实验室的兄弟们要开发一个数据库应用,在我的坚持下选择了pg。应用中需要存放大量二进制大文件,按说没啥问题,但他们需要通过ODBC搞,按说还是没啥问题,可搞不定要我支持。
    在网上一搜,找到了何伟平的帖子(http://www.linuxforum.net/docnew/showthreaded.php?Cat=&Board=faq&Number=257&page=0&view=collapsed&sb=5&o=all&fpart=),照猫画虎结果不灵。原来是版本太老,现在的处理机制有点变化。

    执行下面的脚本会报错:
create type lo (
    internallength=4,  externallength=10,
    input=int4in, output=int4out,
    default='',  passedbyvalue
);

    用这段就没问题了:
CREATE FUNCTION lo_in(cstring)
   RETURNS lo
   AS 'int4in'
   LANGUAGE 'internal' WITH (ISCACHABLE, ISSTRICT);

CREATE FUNCTION lo_out(lo)
   RETURNS cstring
   AS 'int4out'
   LANGUAGE 'internal' WITH (ISCACHABLE, ISSTRICT);

CREATE TYPE lo(
   internallength = 4,
   externallength=10,
   input = lo_in,
   output = lo_out,
   alignment = int4,
   default = '',
   passedbyvalue
);
CREATE CAST (lo AS oid) WITHOUT FUNCTION;

     表里的大对象用新类型'lo'定义就OK了,PostgreSQL的ODBC驱动会将SQL_LONGVARBINARY映射为'lo'。其它的就直接用ODBC API就行了。
   折腾了半天,想想干脆好人做到底,搞了一个VC的ODBC大对象访问demo。操作的数据表用下面的SQL创建:create guest(id int, name lo)。再一想,这种破事大家不必再浪费时间,所以demo程序我也一并放在帖子里了(就是下面的“图片”,下来后把文件扩展名改成rar,呵呵,不让上载rar文件,只好哄哄机器了)。

odbc_large_object.jpg

23.64 KB, 下载次数: 218

论坛徽章:
0
2 [报告]
发表于 2005-07-10 00:26 |只看该作者

[原创]PostgreSQL ODBC大对象支持

你好,你的这篇文章我找了好久了,可是非常遗憾的是,我还是不懂

能不能请大哥,来个简单一点的sample,十分感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP