» 游客:  注册 | 登录 | 会员 | 统计 | 帮助
斑竹的菜园子
 

作者:
标题: 利用存储过程将各类类型文件存入InterBase数据库 上一主题 | 下一主题
borneol
管理员




积分 10952
发贴 955
注册 2005-2-23
来自 重庆
状态 离线
#1  利用存储过程将各类类型文件存入InterBase数据库

以下将演示如何将一个文件存入 InterBase 数据库中。


1:创建表。
CREATE DOMAIN "THBLOB" AS BLOB SUB_TYPE 0 SEGMENT SIZE 80;

CREATE TABLE "TEST_FILES"
(
"TF_EXC" VARCHAR(6),
"TF_FILE" "THBLOB" /*该字段用于存储文件*/
);



2:创建存储过程
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE "PROC_TF_INSERT"
(
"TF_EXC" VARCHAR(6),
"TF_FILE" BLOB SUB_TYPE 0 SEGMENT SIZE 80
)
AS
BEGIN EXIT; END ^


ALTER PROCEDURE "PROC_TF_INSERT"
(
"TF_EXC" VARCHAR(6),
"TF_FILE" BLOB SUB_TYPE 0 SEGMENT SIZE 80
)
AS
/*制作: 龙豪软件 / 唐辉
*Email: web@3asoft.com
*URL: http://www.3asoft.com
*/
BEGIN
/*增加数据*/
INSERT INTO TEST_FILES(TF_EXC,
TF_FILE)
VALUES (:TF_EXC,
:TF_FILE /*文件*/);
SUSPEND;
END
^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;



3:客户端关键代码

if (OpenDialog1->Execute())
{
/* ……*/
IBTransaction1->StartTransaction();
PubProc->Params->Items[0]->AsString = Edit1->Text;
PubProc->Params->Items[1]->LoadFromFile(OpenDialog1->FileName, ftBlob);
PubProc->Prepare();
PubProc->ExecProc();
IBTransaction1->Commit();
}


也可以这样:
……
TMemoryStream* Stream;
Stream = new TMemoryStream;
Stream->LoadFromFile("d:\\ceo.zip"); /*根据情况变能*/
……
PubProc->Params->Items[0]->AsString = Edit1->Text;
PubProc->Params->Items[1]->LoadFromStream(Stream, ftBlob);



0200 1D 06 00 00 A0 86 01 00 FF FF 00 00 1E 06 00 00
         E-mail:webmaster@chenzhang.com
         MSN:borneol_net@hotmail.com
         Home page:www.chenzhang.com
0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2005-3-10 14:37
查看资料  发送邮件  访问主页  发短消息  QQ   编辑帖子  引用回复


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: