用VB存取SQLServer2000數(shù)據(jù)庫(kù)中圖片文件的方法_第1頁(yè)
用VB存取SQLServer2000數(shù)據(jù)庫(kù)中圖片文件的方法_第2頁(yè)
用VB存取SQLServer2000數(shù)據(jù)庫(kù)中圖片文件的方法_第3頁(yè)
用VB存取SQLServer2000數(shù)據(jù)庫(kù)中圖片文件的方法_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2012-07-19#錦#州2師0專(zhuān)1計(jì)2算-機(jī)0系7-1于9占#虎#2#0#12-07-19#摘 要利用 vb6.0 中 ado field 對(duì)象和 stream 對(duì)象,實(shí)現(xiàn)對(duì) sql server2000 數(shù)據(jù)庫(kù)中圖像數(shù)據(jù)的存取。關(guān)鍵詞vb6.0 sql server2000 圖片存取1. 引言在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā)中,經(jīng)常要對(duì)大容量的圖片進(jìn)行存取,如在檔案管理系統(tǒng)中存取人員的照片。而 sql server2000 不支 持 insert 和 update 語(yǔ) 句 對(duì) image 數(shù) 據(jù) 類(lèi) 型 字 段 進(jìn) 行 編輯,因此需編寫(xiě)專(zhuān)門(mén)過(guò)程來(lái)處理圖像字段。筆者結(jié)合自己的實(shí)際應(yīng)用,給出了實(shí)現(xiàn)此功能

2、的方法,愿與同仁共享。2. sql server2000 中圖像數(shù)據(jù)的存儲(chǔ)機(jī)制在 sql server2000 數(shù)據(jù)庫(kù)中,對(duì)于小于 8000 個(gè)字節(jié)的圖像數(shù)據(jù)可以采用二進(jìn)制型(binary、varbinary)來(lái)表示,但通常要保存的圖片一般都大于 8000 個(gè)字節(jié)。sql server 提供了一種機(jī)制,能存儲(chǔ)每行大到 2g 的二進(jìn)制對(duì)象(blob),這類(lèi)對(duì)象可包括 image、text 和 ntext 三種數(shù)據(jù)類(lèi)型,其中 image 數(shù)據(jù)類(lèi)型存儲(chǔ)的是二進(jìn)制數(shù)據(jù)。vb6.0 存取 sql server 中 blob 數(shù)據(jù)有兩種方法。一是利用 ado field 對(duì)象的 appendchunk 和

3、 getchunk 方法。二是利用 stream 對(duì)象的 loadfromfile 和 savetofile 方法。為了更好說(shuō)明這兩種方法,本示例程序存儲(chǔ)圖片采用 ado field對(duì) 象 的 appendchunk 方 法 , 而 讀 取 圖 片 采 用 stream 對(duì) 象 的savetofile 方法。3. 示例實(shí)現(xiàn)步驟及代碼在 sql server2000 中創(chuàng)建數(shù)據(jù)庫(kù) dagl。在 dagl 中創(chuàng)建表 student,包括 stu_no (char 型,存放學(xué)號(hào))、stu_name(char型,存放姓名)、stu_photo(image 型,存放照片)三個(gè)字段。在 vb 的“引用”對(duì)

4、話(huà)框中選擇 microsoft dao 3.6 objectlibrary 和 microsoft activex data objects 2.5 library,在 vb 的“部件”對(duì)話(huà)框中選擇 microsoft common dialog control6.0。新建工程,設(shè)置從 sub main()啟動(dòng),創(chuàng)建一個(gè)模塊 mod-ule1,其代碼如下:public rst as adodb.recordset 定義 sql server 的全局記錄集public cur_record as adodb.recordset 定義臨時(shí)記錄集,保存照片用public cnn as adodb.c

5、onnection 定義一個(gè)網(wǎng)絡(luò)數(shù)據(jù)對(duì)象public netpath as string 定義網(wǎng)絡(luò)服務(wù)器路徑public function connectstring () as string 返回一個(gè)數(shù)據(jù)庫(kù)連接connectstring = driver=sql server;server= & netpath &database=daglend functionsub main()netpath = winsql & ;uid= & sa & ;pwd= & sa& ; 提取網(wǎng)絡(luò)服務(wù)器路徑set cnn = new adodb.connection 創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象dim stokens

6、() as stringstokens = split(sql) 用系統(tǒng) split 函數(shù)產(chǎn)生一個(gè)包含各個(gè)子串的數(shù)組set executecnn = new adodb.connection 創(chuàng)建連接executecnn.open connectstring 打開(kāi)連接set executerst = new adodb.recordset 創(chuàng) 建 記 錄 集 對(duì)象executerst.open trim $(sql), executecnn, adopenkeyset,adlockoptimisticset executesql = executerst 返回記錄集對(duì)象end function

7、新建窗體 form1。窗體上添加兩個(gè)文本框 text1 和 text2,分別用于輸入和顯示學(xué)號(hào)和姓名。一個(gè)圖像框 image1,其 stretch屬性設(shè)為 true,用于顯示照片。一個(gè)通用對(duì)話(huà)框 commondialog1,用于輸入圖片文件。四個(gè)命令按鈕,“添加(command1)”用于保存數(shù)據(jù),“查詢(xún)(command2)”用于顯示數(shù)據(jù),“退出(command3)”用于退出系統(tǒng),“添改照片(command4)”用于輸入照片。各過(guò)程代碼如下:private sub command1_click() 將窗體輸入的數(shù)據(jù)和圖片保存到數(shù)據(jù)庫(kù)rst.addnewrst.fields(0) = trim (

8、text1.text) : rst.fields(1) = trim (text2.text)if isnull (cur_record.fields (2) = false then rst.fields (2) =cur_record.fields(2)rst.updateend subprivate sub command2_click() 查詢(xún)并顯示數(shù)據(jù)庫(kù)中的學(xué)生記錄rst.movefirstif rst.fields(0) trim(text1.text) thenrst.movenextelse 以下程序用于將記錄集當(dāng)前記錄的數(shù)據(jù)添加到窗體的各輸入控件中text1.text = i

9、if(isnull(trim(rst.fields(0), , trim(rst.fields(0)text2.text = iif (isnull (trim (rst.fields (1), , trim (rst.fields(1)image1.picture = loadpicture()if not isnull(rst.fields(2) then 從數(shù)據(jù)庫(kù)中讀取圖片,加載至圖像框dim stm as adodb.streamset stm = new adodb.streamstm.type = adtypebinarystm.opencnn.open driver=sql se

10、rver;server=database=dagl 連接網(wǎng)絡(luò)數(shù)據(jù)庫(kù)form1.show 1end sub&netpath& 傳遞參數(shù) sql 傳遞查詢(xún)語(yǔ)句,msgstring 傳遞查詢(xún)信息,自stm.write rst.fields(2).value2012身-以0一7個(gè)-記1錄9集#對(duì)#象#的形#式#返#回#2012-07-19st#m.s#av#et#ofi#le #a2#pp0.#pa1th 2&-0te7mp-.jp1g9,a#ds#ave#cr#e-#public function executesql (byval sql as string, msgstringateoverwr

11、iteend ifend ifend subprivate sub command3_click() 結(jié)束程序運(yùn)行set rst = nothing : set work_rst = nothing: endend subprivate sub command4_click () 用通用對(duì)話(huà)框輸入圖片,并將圖片文件保存至臨時(shí)記錄集commondialog1.filter = 位圖(*.jpg)|*.jpg| 位圖(*.bmp)|*.bmp 設(shè)置文件過(guò)濾器commondialog1.initdir = app.path & 備用圖片 commondialog1.showopen 顯 示 通 用

12、對(duì) 話(huà) 框控 件 的 打 開(kāi)對(duì)話(huà)框if trim(commondialog1.filename) then 選擇了文件image1.picture = loadpicture(trim(commondialog1.filename) 預(yù)覽圖片cur_record.addnewdim bytedata() as byte 定義數(shù)據(jù)塊數(shù)組dim numblocks as long 定義數(shù)據(jù)塊個(gè)數(shù)dim filelength as long 標(biāo)識(shí)文件長(zhǎng)度dim leftover as long 定義剩余字節(jié)長(zhǎng)度dim sourcefile as long 定義自由文件號(hào)const blocksize

13、 = 4096 定義每次讀寫(xiě)塊的大小dim i as long 定義循環(huán)變量sourcefile = freefile 提供一個(gè)尚未使用的文件號(hào)open trim (commondialog1.filename) for binary accessread as sourcefile 打開(kāi)文件filelength = lof(sourcefile) 得到文件長(zhǎng)度if filelength = 0 then 判斷文件不存在close sourcefileelsenumblocks = filelength blocksize 得 到 數(shù) 據(jù) 塊 的leftover = filelength mo

14、d blocksize 得到剩余字節(jié)數(shù)cur_record.fields(2) = nullredim bytedata(blocksize) 重新定義數(shù)據(jù)塊的大小for i = 1 to numblocksget sourcefile, , bytedata() 讀到內(nèi)存塊中cur_record.fields (2).appendchunk bytedata () 寫(xiě) 入記錄集next iredim bytedata(leftover) 重新定義數(shù)據(jù)塊的大小get sourcefile, , bytedata() 讀到內(nèi)存塊中cur_record.fields (2).appendchunk

15、 bytedata () 寫(xiě) 入 記錄集close sourcefile 關(guān)閉源文件end ifcur_record.updateend ifend subprivate sub form_load()set cur_record = executesql(select * from student , msg-text) 執(zhí)行查詢(xún),用于存入照片set rst = executesql(select * from student , msgtext) 執(zhí)行查詢(xún)操作,用于處理記錄end sub本文程序示例已在 visual basic6.0 中調(diào)試通過(guò),使用者可以此為基礎(chǔ),根據(jù)需要加以適當(dāng)修改就

16、可以直接應(yīng)用。參考文獻(xiàn)1高春艷,劉彬彬,王斌.visual basic 開(kāi)發(fā)技術(shù)大全m.北京:人民郵電出版社,2007.42李淑華.vb 程序設(shè)計(jì)及應(yīng)用m.北京:高等教育出版社,2004.4(上接第 206 頁(yè)) 給我們的教學(xué)帶來(lái)了很大的困擾。據(jù) 2007 年5 月教育部公布的2006 年全國(guó)教育事業(yè)發(fā)展統(tǒng)計(jì)公報(bào)顯示,高等教育招生數(shù)和在校生規(guī)模持續(xù)增加,普通高校的師生比為1:17.93,這大大高于美國(guó) 1:14.2 以及經(jīng)合組織國(guó)家 1:14.4 的比例。嚴(yán)峻的形式迫使我們不得不尋找新的教學(xué)方法和教學(xué)手段來(lái)緩解師資不足造成的教學(xué)壓力,優(yōu)化教育資源。現(xiàn)代社會(huì)正步入信息時(shí)代,互聯(lián)網(wǎng)的飛速發(fā)展正影響

17、和改變著我們的生活,這同時(shí)也為 cai 技術(shù)在大學(xué)英語(yǔ)課堂教學(xué)中的應(yīng)用提供了契機(jī)。第三,在大學(xué)英語(yǔ)課堂教學(xué)中應(yīng)用 cai 技術(shù)也是實(shí)施素質(zhì)教育的需要。為適應(yīng)時(shí)代發(fā)展的需要,培養(yǎng)現(xiàn)代化建設(shè)的新型人才,必須要實(shí)施素質(zhì)教育,把學(xué)生從傳統(tǒng)教學(xué)模式的弊端中解放出來(lái),以培養(yǎng)他們的實(shí)際能力,提高他們作為后備人才的競(jìng)爭(zhēng)力。而素質(zhì)教育的實(shí)施有賴(lài)于教學(xué)模式的改革與教學(xué)手段的提高,教育部高教司司長(zhǎng)張學(xué)堯曾指出:要想提高人才的競(jìng)爭(zhēng)力,首先要解決交流工具問(wèn)題。結(jié)合我國(guó)大學(xué)英語(yǔ)的教學(xué)現(xiàn)狀與高等教育的辦學(xué)力量,推廣多媒體課堂教學(xué)模式無(wú)疑是解決該“交流工具問(wèn)題”的一種可行方法。四、結(jié)語(yǔ)總而言之,猶如生產(chǎn)力的提高必須借助于生產(chǎn)

18、工具的改革一樣,有什么樣的工具水平,就有什么樣的生產(chǎn)力水平。在“科技興國(guó)”、“科技興省”、“科技興市”、“科技興農(nóng)”的大潮中,教師作 為科學(xué)知識(shí)的傳播者,更應(yīng)該認(rèn)真的思考“科技興教”的 問(wèn)題。如果我們的教學(xué)還停留在“一張嘴巴”、“一支粉筆”、“一塊黑板”這樣一種近乎刀耕火種的年代,那么我們的教學(xué)只能是一種技術(shù)含量較低的勞動(dòng)密集型產(chǎn)業(yè),其教學(xué)效率不高,教學(xué)質(zhì)量較低實(shí)屬在所難免。當(dāng)信息革命的浪潮滾滾而來(lái),人們的工作方式、思維方式和生活方式正在悄悄發(fā)生著變化。此時(shí),如何充分運(yùn)用現(xiàn)代教學(xué)技術(shù)武裝我們的教學(xué),啟發(fā)學(xué)生的思維,培養(yǎng)他們的創(chuàng)新能力,對(duì)原有教學(xué)生產(chǎn)方式進(jìn)行一場(chǎng)革命,這正是教育實(shí)踐的呼喚,是時(shí)代的呼喚。大學(xué)英語(yǔ)本身豐富多彩的內(nèi)容早已為 cai 技術(shù)的施展提供了廣闊的舞臺(tái)。在大學(xué)英語(yǔ)課堂教學(xué)中應(yīng)用 cai 技術(shù),能從根本上改變教與學(xué)的方式,從而成為英語(yǔ)教學(xué)中的一個(gè)重要環(huán)節(jié)。它不但可以拓展傳統(tǒng)英

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論