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:duplo3.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的形式。
?? 效率应该会稍低。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|