Sqlserver2008 保存文件对象到字段中

1. 可能存储任意格式的文件 *.xls,*.doc,*.pdf,图片

2. 字段需要定义成: Image类型。需要另外一个字段保存扩展名,以变还原。

3.DB模型为:

    Private arr印影画像() As Byte                        '印影画像

    Public Property b印影画像() As Byte()
        Get
            Return arr印影画像
        End Get
        Set(ByVal Value As Byte())
            arr印影画像 = Value
        End Set
    End Property

    Public Property 印影画像更新() As Boolean
        Get
            Return bln印影画像更新
        End Get
        Set(ByVal value As Boolean)
            bln印影画像更新 = value
        End Set
    End Property

 

             新规sql:

        If objmコントロールT.印影画像更新 = False Then  '印影画像
            strsql.Append(",印影画像" & vbCrLf)
        End If

            '新規を実行する
            If objmコントロールT.印影画像更新 = False Then
                Dim prm4 As New sqlParameter("@Picture",sqlDbType.VarBinary,Int(objmコントロールT.b印影画像.Length),ParameterDirection.Input,False,"",   DaTarowVersion.Current,objmコントロールT.b印影画像)
                objDbHelper.ExcuteNonQuery(strRtnsql.ToString,prm4)
            Else
                objDbHelper.ExcuteNonQuery(strRtnsql.ToString)
            End If

 

       数据库对象类用代参数的方法:            Me.PrepareCommand(strCommandText,parm)

      更新sql

        '印影画像
        If objmコントロールT.印影画像更新 = False Then
            strsql.Append(",印影画像 = @Picture " & vbCrLf)
        End If

            '更新を実行する
            If objmコントロールT.印影画像更新 = False Then
                Dim prm4 As New sqlParameter("@Picture",DaTarowVersion.Current,prm4)
            Else
                objDbHelper.ExcuteNonQuery(strRtnsql.ToString)
            End If

         从画面或文件将对象存入DB模型

        Dim fs As FileStream
        fs = New FileStream("E:\duplo\3.xls",FileMode.Open,FileAccess.Read)
        Dim Data(fs.Length) As Byte
        fs.Read(Data,Int(fs.Length))
        objmコントロールT.b印影画像 = Data

 

            从数据库取得后转为byte()

                If PFn_NullToString(dtRtnSearch.Rows(0).Item("印影画像")) <> "" Then
                    objmコントロールT.b印影画像 = CType(dtRtnSearch.Rows(0).Item("印影画像"),Byte())
                End If

              保存为文件或画面显示

            'Pic印影画像 画面显示

            If Not mObjMコントロールT.b印影画像 Is nothing Then
                ms = New MemoryStream(mObjMコントロールT.b印影画像)

                me.pic印影画像.Image = Image.FromStream(ms)

            End If

            或保存为文件

             方案1:FileStream处理

                Dim Fs As FileStream = New FileStream("e:\bbb.xls",_
     FileMode.OpenorCreate,FileAccess.Write,FileShare.None)
                'Fs.Write(mObjMコントロールT.b印影画像)

                For i As Integer = 0 To mObjMコントロールT.b印影画像.Count - 1
                    Fs.WriteByte(mObjMコントロールT.b印影画像(i))
                Next
                Fs.Flush()
                Fs.Close()

                'CreateTextFile("E:\aaa.xls")


               方案2:MemoryStream+FileStream处理

              ms = New MemoryStream(mObjMコントロールT.b印影画像)

        Dim Fs As FileStream = New FileStream("e:\bbb.xls",_
         FileMode.OpenorCreate,FileShare.None)

         ms.Writeto(Fs)
        ms.Close()
        Fs.Close()

4. 结论存什么文件都可以,连excel的格式都没有问题。存入各取出都是byte的形式。

   效率应该会稍低。

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...