亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        SQL數(shù)據(jù)庫中圖形圖像的訪問

        2007-12-31 00:00:00謝會賓
        成才之路 2007年24期

        摘要:本文主要描述圖形圖像數(shù)據(jù)的處理方式;并介紹集成方式下,如何訪問SQL數(shù)據(jù)庫中的圖形圖像數(shù)據(jù)的技術(shù)。

        關(guān)鍵詞:圖形圖像數(shù)據(jù);集成式;讀取;保存

        隨著計算機(jī)技術(shù)的不斷發(fā)展,計算機(jī)可處理的信息源種類也越來越豐富,其中就包括圖形圖像。在日常處理事務(wù)中,人們也往往將圖形圖像列為一個重要的相關(guān)數(shù)據(jù)加以保存和處理。圖形圖像文件常見為.bmp、.jpg或.gif文件。

        數(shù)據(jù)庫技術(shù)中,通常對圖形圖像數(shù)據(jù)的處理有兩種方式。(1)集成式:將圖形圖像數(shù)據(jù)集成到數(shù)據(jù)庫中,和普通的文本和數(shù)值數(shù)據(jù)存儲在一起,使得給定數(shù)據(jù)庫實體的所有相關(guān)信息都會集中。集成式有利于通過查詢圖形圖像數(shù)據(jù)的相關(guān)文本信息來查找和檢索圖形圖像數(shù)據(jù);(2)分離式:即把圖形圖像文件存儲在數(shù)據(jù)庫外部,在數(shù)據(jù)庫中包含對象的文件路徑或URL。分離式在編程方面比較容易,數(shù)據(jù)庫也較小,但必須手動創(chuàng)建、維護(hù)數(shù)據(jù)庫和外部系統(tǒng)文件間的某種鏈接,往往稍不注意就會導(dǎo)致不同步。

        大多數(shù)現(xiàn)代數(shù)據(jù)庫如SQL Server、Oracle和UDB提供的二進(jìn)制存儲區(qū)可以容納所有類型的對象。在本文中就是將圖形圖像數(shù)據(jù)集成到SQL數(shù)據(jù)庫中,和它們相關(guān)的文本和數(shù)值數(shù)據(jù)保存在一起。那么如何訪問集成到數(shù)據(jù)庫中的圖形圖像數(shù)據(jù),并進(jìn)行存取操作呢?下面就利用SQL數(shù)據(jù)庫Northwind中自己新建的數(shù)據(jù)表tuxing(學(xué)號(char,10),地址(char,60),圖形(image,16))進(jìn)行圖形字段值的存取操作。

        1. 從SQL數(shù)據(jù)庫中讀取圖形圖像數(shù)據(jù)顯示到窗體的圖像控件中

        使用SqlDataReader檢索圖形圖像數(shù)據(jù)類似于檢索字符和數(shù)值數(shù)據(jù),但有一些重要的區(qū)別,其中最主要的區(qū)別是要在Command對象的ExecuteReader方法上使用CommandBehavior.SequentialAccess來訪問標(biāo)記。在指定SequentialAccess時,會改變DataReader兩個方面的默認(rèn)執(zhí)行方式。首先,不需按列的返回順序讀取它們,即可以在數(shù)據(jù)流中快速向前移動。但是,一旦應(yīng)用程序在返回的數(shù)據(jù)庫中向后讀取到某個位置,就不能再讀取當(dāng)前位置之前的數(shù)據(jù)了。其次,CommandBehavior.SequentialAccess標(biāo)記關(guān)閉了DataReader的正常緩存模式,在正常的緩存模式下,DataReader總是一次返回一行,而不是把結(jié)果送回應(yīng)用程序。

        為了訪問文件系統(tǒng),需要把.NET的System.IO命名空間導(dǎo)入到應(yīng)用程序中。即在項目中添加代碼: ImportsSystem 和ImportsSystem. IO 。然后利用SqlDataReader和以下的代碼對SQL數(shù)據(jù)庫中的圖形圖像數(shù)據(jù)進(jìn)行訪問:

        Private Sub ReadPic_Click(ByVal sServer As String, ByValsDB As String) Handles ReadPic.Click

        Dim Scnn1 As New SqlClient.SqlConnection(“SERVER=”Sserver“;INTEGRATED SECURITY=True;DATABASE=” Sdb)

        Dim Cmd As SqlClient.SqlCommand =New SqlClient.SqlCommand(“Select 圖形From tuxing Where 學(xué)號='009'”,Scnn1)

        Dim Fs As FileStream

        Dim Bw As BinaryWriter

        Dim Ibuffersize As Integer = 1000

        Dim Bblobstorage(Ibuffersize-1)As Byte

        Dim Lretval As Long

        Dim Lstartindex As Long = 0

        Dim Soutputfilename As String

        Soutputfilename=“Tempexportblobfile”

        Fs=New FileStream(Soutputfilename,F(xiàn)ileMode. OpenOrCreate,F(xiàn)ileAccess.Write)

        Bw = New BinaryWriter(Fs)

        Dim Rdr As SqlClient.SqlDataReader

        Try

        Scnn1.Open()

        Rdr = Cmd.ExecuteReader(CommandBehavior.SequentialAccess)

        Do While Rdr.Read()

        Lstartindex = 0

        Lretval = Rdr.GetBytes(0, Lstartindex, Bblobstorage, 0, Ibuffersize)

        Do While Lretval = Ibuffersize

        Bw.Write(Bblobstorage)

        Bw.Flush()

        Lstartindex = Lstartindex + Ibuffersize

        Lretval = Rdr.GetBytes(0, Lstartindex, Bblobstorage, 0, Ibuffersize)

        Loop

        Bw.Write(Bblobstorage)

        Bw.Flush()

        Bw.Close()

        Fs.Close()

        Loop

        Rdr.Close()

        Lblbigbot.Image=Image.FromFile(“Tempexportblobfile”)

        Catch ex As Exception

        MsgBox(ex.Message)

        Finally

        Scnn1.Close()

        End Try

        End Sub

        2. 保存圖形圖像數(shù)據(jù)到SQL數(shù)據(jù)庫中

        Private Sub Savepic_click(Byval Sserver As String, Byval Sdb As String) Handles Savepic.Click

        Dim Scnn1 As SqlClient.SqlConnection=New SqlClient.SqlConnectiong(“SERVER=” Sserver“;INTEGRATED SECURITY=True;DATABASE=” Sdb)

        Dim Sda1 As SqlClient.SqlDataAdapter

        =New SqlClient.SqlDataAdpter(“Select * From tuxing”,Scnn1)

        Dim DataSet11 As DataSet=New DataSet()

        Dim Sqlcb=New SqlClient.SqlCommandBuilder(Sqlda)

        Dim Fs As FileStream = New FileStream(\"c:\\sunset.jpg\", FileMode.OpenOrCreate, FileAccess.Read)

        Dim x As Integer

        Try

        Sda1.Fill(DataSet11, \"tuxing\")

        x= CType(Fs.Length, Integer)

        Dim Bblob(x) As Byte

        Fs.Read(Bblob, 0, x)

        Fs.Close()

        Dim Sqldr As DataRow = DataSet11.Tables(“tuxing”).NewRow()

        Sqldr(0) = “009”

        Sqldr(1) = “c:\\sunset.jpg”

        Sqldr(2) = Bblob

        DataSet11.Tables(\"tuxing\").Rows.Add(Sqldr)

        Sda1.Update(DataSet11, “tuxing”)

        MsgBox(“finish!”)

        Catch ex As Exception

        MsgBox(ex.Message)

        End Try

        End Sub

        參考文獻(xiàn):

        [1] Mike Gunderloy.邱仲潘等譯.ADO與ADO.NET編程指南.電子工業(yè)出版社.

        [2] 微軟公司.數(shù)據(jù)庫訪問技術(shù)—ADO.NET程序設(shè)計.高等教育出版社.

        [3] [美]Michael Otey; Denielle Otey著. 史創(chuàng)明,崔金鈴譯.ADO.NET技術(shù)參考大全.清華大學(xué)出版社.

        伊人久久精品亚洲午夜| A亚洲VA欧美VA国产综合| 91青青草在线观看视频| 中文字幕亚洲精品在线| 美女不带套日出白浆免费视频| 成人片黄网站色大片免费观看cn| 亚洲AV无码一区二区三区ba| 偷拍av一区二区三区| 日本免费一区二区在线视频播放 | 中文字幕影片免费在线观看| 亚洲中文一本无码AV在线无码| 亚洲一区二区视频免费看| 久久综合九色欧美综合狠狠| 亚洲av永久无码精品| 国产成人啪精品| 国产日韩精品视频一区二区三区| av在线免费观看网站免费| 少妇高潮惨叫久久久久久电影| 色婷婷六月天| 久草91这里只有精品| 成人久久久精品乱码一区二区三区 | 99国产超薄丝袜足j在线观看 | 国产AV无码专区久久精品网站| 免费高清视频在线观看视频| 日本刺激视频一区二区| 人妻av无码一区二区三区| 伊伊人成亚洲综合人网7777| 中文字幕亚洲综合久久| 熟妇人妻精品一区二区视频免费的| 丰满少妇人妻无码专区| 亚洲男同志gay 片可播放| 日本一区二区三本视频在线观看| 日本九州不卡久久精品一区| 国产精品三级av及在线观看| 国产精品成人av在线观看| 熟女少妇av免费观看| 国产精品三区四区亚洲av| 亚洲国产精品综合久久网各| 美女裸体无遮挡免费视频的网站| 亚洲黑寡妇黄色一级片| 狂猛欧美激情性xxxx大豆行情|