不用流,也不用.AppendChunk,直接用SQL语句可不可以!如可以怎么用!

解决方案 »

  1.   

    转换的方法很多,比如BASE64。
    但是这样得不偿失,性能下降很多。
      

  2.   

    否则开发商为什么要提供STREAM对象,APPENDCHUNK方法呢?
      

  3.   

    不用流,也不用.AppendChunk
    ------------------------------
    那就用二进制方式来读写文件,请参考(把文件(包括图片)存入数据库):Dim cn As New ADODB.Connection,rs As New ADODB.Recordset
    Private Sub Form_Load()
        cn.CursorLocation = adUseClient
        '这里给的是sql库的连接,具体的数据库连接请自己改过来,如果是Access库,只改数据库的连接即可
        cn.Open "Provider=SQLOLEDB.1;Password=;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=ljx"
    End SubPrivate Sub cmdSaveFile_Click()
        saveFile App.Path & "\temp.jpg"
    End SubPrivate Sub cmdReadFile_Click()
        readFile App.Path & "\temp1.jpg"
    End Sub'保存文件到数据库
    Private Sub saveFile(Byval strFile As String)
        Dim tmp() As Byte
        Dim lngFile As Long
        If rs.State=adStateOpen Then rs.Close
        rs.Open "select * from test where 1<>1", cn, adOpenDynamic, adLockOptimistic
        
        lngFile = FreeFile
        Open strFile For Binary As #lngFile
        ReDim tmp(LOF(lngFile))
        Get #lngFile, , tmp
        Close #lngFile
        rs.AddNew
        rs.Fields("ID").Value="001"
        rs.Fields("pic").Value = tmp
        rs.Update
    End Sub'读取数据库的文件,保存到硬盘
    Private Sub readFile(Byval strFile As String)
        Dim tmp() As Byte
        If rs.State=adStateOpen Then rs.Close
        rs.Open "select * from test where [ID]='001'", cn
        ReDim tmp(rs.Fields(0).ActualSize)                     '返回2进制文件的字节长度
        tmp = rs.Fields("pic").Value
        Open strFile For Binary As #1
        Put #1, , tmp
        Close #1
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        If rs.State<>adStateClosed Then rs.Close
        If cn.State<>adStateClosed Then cn.Close
        Set rs = Nothing
        Set cn=Nothing
    End Sub
      

  4.   

    最想知道的是如不转换能不能用SQL语句直接操作,如Insert into或update
      

  5.   

    SQL语句本身是字符串,并且有长度限制。
    如果你非要用SQL语句的话,必须保证你的值也是字符串,并且在SQL规定的长度之内。
    这些你做到了,那么就能如你所愿。