如何(1)将一个图片以二进制保存到SQL数据库(2)再读取到一个Pic控件中
假设数据库名是A,表名是B,字段名是C(binary)
给个VB代码,谢谢

解决方案 »

  1.   

    http://www.chenoe.com/blog/article.asp?id=1打开vb6,新建工程。添加两个按钮,一个image控件注意:Access中的photo字段类型为OLE对象.SqlServer中的photo字段类型为Image.'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本‘2.5版本以下不支持Stream对象Dim iConcstr As StringDim iConc As ADODB.Connection'保存文件到数据库中Sub s_SaveFile()Dim iStm As ADODB.StreamDim iRe As ADODB.RecordsetDim iConcstr As String'读取文件到内容Set iStm = New ADODB.StreamWith iStm.Type = adTypeBinary '二进制模式.Open.LoadFromFile App.Path + "\test.jpg"End With'打开保存文件的表Set iRe = New ADODB.RecordsetWith iRe.Open "select * from img", iConc, 1, 3.AddNew '新增一条记录.Fields("photo") = iStm.Read.UpdateEnd With'完成后关闭对象iRe.CloseiStm.CloseEnd SubSub s_ReadFile()Dim iStm As ADODB.StreamDim iRe As ADODB.Recordset'打开表Set iRe = New ADODB.Recordset‘得到最新添加的纪录iRe.Open "select top 1 * from img order by id desc", iConc, adOpenKeyset, adLockReadOnly'保存到文件Set iStm = New ADODB.StreamWith iStm.Mode = adModeReadWrite.Type = adTypeBinary.Open.Write iRe("photo")‘这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误..SaveToFile App.Path & "\test1.jpg"End WithImage1.Picture = LoadPicture(App.Path & "\test1.jpg")'关闭对象iRe.CloseiStm.CloseEnd SubPrivate Sub Command1_Click()Call s_ReadFileEnd SubPrivate Sub Command2_Click()Call s_SaveFileEnd SubPrivate Sub Form_Load()'数据库连接字符串iConcstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _";Data Source=F:\csdn_vb\database\保存图片\access图片\img.mdb"‘下面的语句是连接sqlserver数据库的.‘iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _‘ "User ID=sa;Password=;Initial Catalog=test;Data Source=yang"Set iConc = New ADODB.ConnectioniConc.Open iConcstrEnd SubPrivate Sub Form_Unload(Cancel As Integer)iConc.CloseSet iConc = NothingEnd Sub你也可以使用二进制方式读取,但是你可以看到流对象的简单高效.可以参考MS的知识库文章来加强这个知识点:http://support.microsoft.com/default.aspx?scid=kb;EN-US;258038
      

  2.   

    是否支持JPG,BMP,GIF,等多种图片格式
      

  3.   

    是否支持JPG,BMP,GIF,等多种图片格式
    ===============
    音频、视频、图片、文档等等,都可以用Stream存取到数据库