知识大全 在PB中用OLE存取blob类型数据(三)

Posted

篇首语:知识的价值不在于占有,而在于使用。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在PB中用OLE存取blob类型数据(三)相关的知识,希望对你有一定的参考价值。

在PB中用OLE存取blob类型数据(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   源程序建立

   )首先在数据库中建立如下结构的表blobsave

   字段名称  数据类型  备注

   id  char( )  primairy key index

   s_path  char( )

   pic   binary ( )

   )在PB建立PBl库blobsave PBl

   )在PBl库blobsave PBl中建立应用blobsave

  在应用的open事件中设置数据库连接程序(本程序中采用的是odbc方式连接数据库 读者可根据自己所建立的数据库的不同选用不同的连接方式 以下连接数据库的代码也有所改动 至于连接不同的数据库的方法 请参考有关资料 本文不做详细介绍)

  SQLCA DBMS = ODBC   SQLCA AutoCommit = False   SQLCA DBParm = Connectstring= DSN=blob   connect   open(w_main)

  其中命令按钮cb_path的clicked中的代码格式如下 open(w_path)

  其中命令按钮cb_dbblob的clicked中的代码格式如下 open(w_dbblob)

  其中命令按钮cb_OLEblob的clicked中的代码格式如下 open(w_OLEblob)

   ) 建立数据窗口dw_blobsave

  按照上文中建立数?荽翱诘腷lob列的方法建立数据窗口dw_blobsave如图所示

  其中 add del save cancel retrieve等分别为数据窗口dw_blobsave的append row delete row update retrieve动作按钮

首先创建实例变量 OLEstorage stor

  然后如图建立窗口w_path 其中数据窗口控件dw_ 的rowfocuschanged中的代码如下

  long row_num   row_num=dw_ getrow()   if row_num > then   ole_ insertfile(dw_ object s_path[row_num])   end if

  其中数据窗口dw_ 的buttonclicked中的代码如下

  if dwo name= cbselect then   long row_num   row_num=dw_ getrow()   string filepath filename   getfileopenname( 请选择备注文件 filepath filename)   dw_ object s_path[row_num]=filepath   ole_ insertfile(filepath)   end if

  保存窗口w_path

   )建立窗口w_dbblob

  打开w_path 把其另存为w_dbblob 改变数据窗口dw_ 的rowfocuschanged中的代码如下

  blob text   long row_num   row_num=dw_ getrow()   if row_num> then   string id   id = dw_ object id[row_num]   sqlca automit=true   selectblob pic into :text from blobsave where id = :id   ole_ objectdata=text   sqlca automit=false   end if

  改变数据窗口dw_ 的buttonclicked中的代码如下

  long row_num   if dwo name= cbselect then   row_num=dw_ getrow()   string filepath filename   getfileopenname( 请选择备注文件 filepath filename)   dw_ object s_path[row_num]=filepath   ole_ insertfile(filepath)   end if   if dwo name= cbsave then   string id   sqlca automit = true   blob text   text = ole_ objectdata   dw_ update()   mit   row_num=dw_ getrow()   id=dw_ object id[row_num]   updateblob blobsave   set pic = :text   where id = :id   mit   sqlca automit = FALSE   dw_ retrieve()   dw_ scrolltorow(row_num)   end if   保存窗口w_dbblob

   )建立窗口w_OLEblob

  打开w_path 把其另存为w_OLEblob 在窗口w_OLEblob的open事件中写入以下代码

  stor = create olestorage   stor open( c:\\p ole ) //打开或创建ole文件   在窗口w_OLEblob的close事件中写入以下代码   destroy stor

  改变数据窗口dw_ 的rowfocuschanged中的代码如下

  blob text   long row_num   row_num=dw_ getrow()   if row_num> then   string id   id = dw_ object id[row_num]   ole_ open(stor w +id)   end if

  改变数据窗口dw_ 的buttonclicked中的代码如下

  long row_num   if dwo name= cbselect then   row_num=dw_ getrow()   string filepath filename   getfileopenname( 请选择备注文件 filepath filename)   dw_ object s_path[row_num]=filepath   ole_ insertfile(filepath)   end if   if dwo name= cbsave then   string id   row_num=dw_ getrow()   id=dw_ object id[row_num]   ole_ saveas(stor w +id)   stor save()   end if

  保存窗口w_OLEblob 运行应用程序即可

   三种方法的优缺点

  方法一 文件保存在固定的路径下 数据库中存取文件路径和名称可以节省数据空间 避免了数据库过分膨胀 但备注文件必须在一定的目录下 不能丢失 且同一目录下文件不能重名 对文件的管理造成一定的困难 另外 在OLE控件中浏览显示备注文件时 由于每次都要调用服务器程序 所以速度较慢

  方法二 在数据库中用blob类型或者varbinary类型字段存储备注文件 当文件存储在数据库中以后 就可以删除硬盘上原来的临时文件 不需要复杂的二进制文件管理 且数据库可以存储在网络服务器上 对数据的共享非常方便

cha138/Article/program/SQL/201311/16227

相关参考

知识大全 在PB中用OLE存取blob类型数据(二)

在PB中用OLE存取blob类型数据(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  处理b

知识大全 PB数据窗口中用Enter键替代Tab键切换栏目

PB数据窗口中用Enter键替代Tab键切换栏目  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 hibernate 经验谈2

  hibernate虽然对多种数据库进行了适应以达到前台感受不到后台的数据库类型但是在Blob和Clob这两种类型的存取方面不同的数据库有不同的实现方法这方面hibernate  

知识大全 Hibernate+Spring搞定Clob、Blob的存取

Hibernate+Spring搞定Clob、Blob的存取  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 在PB中如何实现数据模糊查询(三)

在PB中如何实现数据模糊查询(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 在PB中用Flash制作Splash封面

在PB中用Flash制作Splash封面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们常用

知识大全 在PowerBuilder中操作BLOB数据的技巧[2]

在PowerBuilder中操作BLOB数据的技巧[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 在PowerBuilder中操作BLOB数据的技巧[1]

在PowerBuilder中操作BLOB数据的技巧[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 使用OLE对象访问Oracle数据库

使用OLE对象访问Oracle数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  OLE即对象

知识大全 JDBC+Hibernate将Blob数据写入Oracle

JDBC+Hibernate将Blob数据写入Oracle  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一