• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在PB中用OLE存取blob類型數據(三)

    發布: 2008-4-22 09:53 | 作者: hash | 來源: ddvip.com | 查看: 125次 | 進入軟件測試論壇討論

    領測軟件測試網 6、源程序建立

      1)首先在數據庫中建立如下結構的表blobsave:

       字段名稱  數據類型  備注

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

       s_path  char(50)

       pic   binary (50)

      2)在PB建立PBl庫blobsave.PBl

      3)在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)

      4) 建立數據窗口dw_blobsave

      按照上文中建立數?荽翱詰腷lob列的方法建立數據窗口dw_blobsave如圖所示:

      其中:add,del,save,cancel,,retrieve等分別為數據窗口dw_blobsave的append row,delete row,update,retrieve動作按鈕。

    首先創建實例變量 OLEstorage stor1

      然后如圖建立窗口w_path,其中數據窗口控件dw_1的rowfocuschanged中的代碼如下:

      long row_num
      row_num=dw_1.getrow()
      if row_num >0 then
      ole_1.insertfile(dw_1.object.s_path[row_num])
      end if

      其中數據窗口dw_1的buttonclicked中的代碼如下:

      if dwo.name="cbselect" then
      long row_num
      row_num=dw_1.getrow()
      string filepath,filename
      getfileopenname("請選擇備注文件",filepath,filename)
      dw_1.object.s_path[row_num]=filepath
      ole_1.insertfile(filepath)
      end if

      保存窗口w_path

      6)建立窗口w_dbblob

      打開w_path,把其另存為w_dbblob,改變數據窗口dw_1的rowfocuschanged中的代碼如下:

      blob text1
      long row_num
      row_num=dw_1.getrow()
      if row_num>0 then
      string id
      id = dw_1.object.id[row_num]
      sqlca.autocommit=true
      selectblob pic into :text1 from blobsave where id = :id;
      ole_1.objectdata=text1
      sqlca.autocommit=false
      end if

      改變數據窗口dw_1的buttonclicked中的代碼如下:

      long row_num
      if dwo.name="cbselect" then
      row_num=dw_1.getrow()
      string filepath,filename
      getfileopenname("請選擇備注文件",filepath,filename)
      dw_1.object.s_path[row_num]=filepath
      ole_1.insertfile(filepath)
      end if
      if dwo.name="cbsave" then
      string id
      sqlca.autocommit = true
      blob text1
      text1 = ole_1.objectdata
      dw_1.update()
      commit;
      row_num=dw_1.getrow()
      id=dw_1.object.id[row_num]
      updateblob blobsave
      set pic = :text1
      where id = :id ;
      commit;
      sqlca.autocommit = FALSE
      dw_1.retrieve()
      dw_1.scrolltorow(row_num)
      end if
      保存窗口w_dbblob

      7)建立窗口w_OLEblob

      打開w_path,把其另存為w_OLEblob,在窗口w_OLEblob的open事件中寫入以下代碼:

      stor1 = create olestorage
      stor1.open("c:\p1.ole") //打開或創建ole文件
      在窗口w_OLEblob的close事件中寫入以下代碼:
      destroy stor1

      改變數據窗口dw_1的rowfocuschanged中的代碼如下:

      blob text1
      long row_num
      row_num=dw_1.getrow()
      if row_num>0 then
      string id
      id = dw_1.object.id[row_num]
      ole_1.open(stor1,"w"+id)
      end if

      改變數據窗口dw_1的buttonclicked中的代碼如下:

      long row_num
      if dwo.name="cbselect" then
      row_num=dw_1.getrow()
      string filepath,filename
      getfileopenname("請選擇備注文件",filepath,filename)
      dw_1.object.s_path[row_num]=filepath
      ole_1.insertfile(filepath)
      end if
      if dwo.name="cbsave" then
      string id
      row_num=dw_1.getrow()
      id=dw_1.object.id[row_num]
      ole_1.saveas(stor1,"w"+id)
      stor1.save()
      end if

      保存窗口w_OLEblob,運行應用程序即可。

      7、三種方法的優缺點

      方法一:文件保存在固定的路徑下,數據庫中存取文件路徑和名稱可以節省數據空間,避免了數據庫過分膨脹,但備注文件必須在一定的目錄下,不能丟失,且同一目錄下文件不能重名,對文件的管理造成一定的困難,另外,在OLE控件中瀏覽顯示備注文件時,由于每次都要調用服務器程序,所以速度較慢。

      方法二:在數據庫中用blob類型或者varbinary類型字段存儲備注文件,當文件存儲在數據庫中以后,就可以刪除硬盤上原來的臨時文件,不需要復雜的二進制文件管理,且數據庫可以存儲在網絡服務器上,對數據的共享非常方便。

      方法三:在本地用OLE存儲結構存儲備注文件?梢园阉械亩M制文件信息存儲在一個OLE存儲文件中,管理比較方便。當二進制文件信息存儲后,可以刪除原來的臨時文件;因為打開存儲文件后不需要每次執行服務器程序來顯示存儲信息,所以存取速度較快。 說明:本文在PB6.5,Sql anywhere數據庫和PB6.5,Sql Server數據庫下,windows98,windows me,NT4.0平臺上試驗通過。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 類型 數據 blob OLE 存取


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>