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, 0, 0, "", 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", SqlDbType.VarBinary, Int(objmコントロールT.b印影画像.Length), ParameterDirection.Input, False, 0, 0, "", DataRowVersion.Current, objmコントロールT.b印影画像)
objDbHelper.ExcuteNonQuery(strRtnSQL.ToString, 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, 0, 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, FileAccess.Write, FileShare.None)
ms.WriteTo(Fs)
ms.Close()
Fs.Close()
4. 结论存什么文件都可以,连excel的格式都没有问题。存入各取出都是byte的形式。
效率应该会稍低。