求助,如何将图象存到数据库里面去啊,谢谢!

f_oasis 2003-05-26 06:39:31
如题,高分!
...全文
46 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
f_oasis 2003-05-28
  • 打赏
  • 举报
回复
谢谢楼上的
问题基本解决了!但是还有点细节的没有搞定!我开一个新的帖子去问就是,这里我给分了
db2boy 2003-05-28
  • 打赏
  • 举报
回复
如果是编程的话,就没有必要非用SQL语句来处理,lingyunfeipu的例子可以参考,如果用java,http://www-900.ibm.com/developerWorks/cn/dmdd/support/sample_code/index.shtml上面有一个用java写的存取clob的例子,意思差不多,你可以参考一下。
db2boy 2003-05-27
  • 打赏
  • 举报
回复
http://www-900.ibm.com/developerWorks/cn/dmdd/support/downloads/downloads.shtml,这上面有image extender的介绍, 可以看看
db2boy 2003-05-27
  • 打赏
  • 举报
回复
如果想用sql直接处理,可以用IMAGE EXTENDER,它还可以对存储的图像进行一定的处理,比如格式转换。
lingyunfeipu 2003-05-27
  • 打赏
  • 举报
回复
通过Microsoft OLE DB Provider for ODBC Driver进行连接需要配置客户端ODBC,在客户端ODBC配置中有一高级选项,可以对数据类型进行配置:
长对象二进制处理:有两个选项(作为LOB数据;作为LongVar数据)
选用作为LongVar数据,并指定最大LOB列大小

我用的是bcb的例子:
//////////////////////////////////////下面的代码是使blob字段可以存放二进制的
AnsiString S;
TRegistry *Registry = new TRegistry;
Registry->RootKey = HKEY_LOCAL_MACHINE;
Registry->OpenKey("SOFTWARE\\IBM\\DB2", true);
S = Registry->ReadString("DB2 Path Name");
AnsiString IniFiledb2 ;
IniFiledb2= S + "\\db2cli.ini";
TIniFile *inidb2 = new TIniFile (IniFiledb2);
int longd = inidb2->ReadInteger("TZGL","LONGDATACOMPAT",0);
int lobm = inidb2->ReadInteger( "TZGL", "LOBMAXCOLUMNSIZE",0);
if(longd !=1)
inidb2->WriteInteger( "TZGL", "LONGDATACOMPAT",1);
if(lobm != 2048575)
inidb2->WriteInteger( "TZGL", "LOBMAXCOLUMNSIZE",2048575);
delete inidb2;

存方法如下:
if(!OpenDialog1->Execute())
return;
TMemoryStream *tmpStream = new TMemoryStream();
TBlobField *tmpField;
tmpStream->LoadFromFile(OpenDialog1->FileName);
ADOTable1->Edit();
ADOTable1->FieldByName("name")->AsString = OpenDialog1->FileName;
tmpField = (TBlobField *)ADOTable1->FieldByName("Doc");
tmpField->LoadFromStream(tmpStream);
ADOTable1->Post();
tmpField = NULL;
delete tmpStream;
读取如下:
TStream *Stream;
TMemoryStream *tmpStream = new TMemoryStream();
ADOTable1->Edit();
Stream = ADOTable1->CreateBlobStream(ADOTable1->FieldByName("Doc"),bmRead);
ADOTable1->Close();
tmpStream->CopyFrom(Stream,Stream->Size);
tmpStream->SaveToFile("E:\\temp.doc");
Stream = NULL;
delete tmpStream;
f_oasis 2003-05-27
  • 打赏
  • 举报
回复
谢谢,要是我想用java来写语句的话,那么sql该怎么来写啊?比如
insert into administrator.img(imagin)values(???)
问号的的地方可以直接用个流stream就可以嘛?
f_oasis 2003-05-26
  • 打赏
  • 举报
回复
这样啊,多谢,那么sql语句该怎么来写啊,多谢!
m505 2003-05-26
  • 打赏
  • 举报
回复
用blob字段

5,888

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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