各位大侠来帮忙,已经实现用vb ado控件与数据库的连接,现在就是不能写入数据库的long raw。 
    Open "D:\FoxGif\idiot.JPG" For Binary As #1
    Dim filelong As Long
    filelong = LOF(1)
    Dim pbyte(filelong) As Byte
    Get #1, , pbyte
直接用insert语句,把pbyte给进去吗?

解决方案 »

  1.   

    直接插入是不行的,用AppendChunk方法
    Public Sub AppendChunkX()   Dim cn As ADODB.Connection
       Dim rstPubInfo As ADODB.Recordset
       Dim strCn As String
       Dim strPubID As String
       Dim strPRInfo As String
       Dim lngOffset As Long
       Dim lngLogoSize As Long
       Dim varLogo As Variant
       Dim varChunk As Variant   Const conChunkSize = 100   ' Open a connection.
       Set cn = New ADODB.Connection
       strCn = "Server=srv;Database=pubs;UID=sa;Pwd=;"   cn.Provider = "sqloledb"
       cn.Open strCn   'Open the pub_info_x table.
       Set rstPubInfo = New ADODB.Recordset
       rstPubInfo.CursorType = adOpenDynamic
       rstPubInfo.LockType = adLockOptimistic
       rstPubInfo.Open "pub_info_x", cn, , , adCmdTable   'Prompt for a logo to copy.
       strMsg = "Available logos are : " & vbCr & vbCr   Do While Not rstPubInfo.EOF
          strMsg = strMsg & rstPubInfo!pub_id & vbCr & _ 
            Left(rstPubInfo!pr_info,
             InStr(rstPubInfo!pr_info, ",") - 1) & vbCr & vbCr
          rstPubInfo.MoveNext
       Loop   strMsg = strMsg & "Enter the ID of a logo to copy:"
       strPubID = InputBox(strMsg)   ' Copy the logo to a variable in chunks.
       rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
       lngLogoSize = rstPubInfo!logo.ActualSize
       Do While lngOffset < lngLogoSize
          varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
          varLogo = varLogo & varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   ' Get data from the user.
       strPubID = Trim(InputBox("Enter a new pub ID:"))
       strPRInfo = Trim(InputBox("Enter descriptive text:"))   ' Add a new record, copying the logo in chunks.
       rstPubInfo.AddNew
       rstPubInfo!pub_id = strPubID
       rstPubInfo!pr_info = strPRInfo
       lngOffset = 0   ' Reset offset.   Do While lngOffset < lngLogoSize
          varChunk = LeftB(RightB(varLogo, lngLogoSize - _ 
            lngOffset),conChunkSize)
          rstPubInfo!logo.AppendChunk varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   rstPubInfo.Update   ' Show the newly added data.
       MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _ 
         "Description: " & rstPubInfo!pr_info & vbCr & _ 
         "Logo size: " & rstPubInfo!logo.ActualSize   rstPubInfo.Close
       cn.CloseEnd Sub
      

  2.   

    直接插入是不行的,用AppendChunk方法
    Public Sub AppendChunkX()   Dim cn As ADODB.Connection
       Dim rstPubInfo As ADODB.Recordset
       Dim strCn As String
       Dim strPubID As String
       Dim strPRInfo As String
       Dim lngOffset As Long
       Dim lngLogoSize As Long
       Dim varLogo As Variant
       Dim varChunk As Variant   Const conChunkSize = 100   ' Open a connection.
       Set cn = New ADODB.Connection
       strCn = "Server=srv;Database=pubs;UID=sa;Pwd=;"   cn.Provider = "sqloledb"
       cn.Open strCn   'Open the pub_info_x table.
       Set rstPubInfo = New ADODB.Recordset
       rstPubInfo.CursorType = adOpenDynamic
       rstPubInfo.LockType = adLockOptimistic
       rstPubInfo.Open "pub_info_x", cn, , , adCmdTable   'Prompt for a logo to copy.
       strMsg = "Available logos are : " & vbCr & vbCr   Do While Not rstPubInfo.EOF
          strMsg = strMsg & rstPubInfo!pub_id & vbCr & _ 
            Left(rstPubInfo!pr_info,
             InStr(rstPubInfo!pr_info, ",") - 1) & vbCr & vbCr
          rstPubInfo.MoveNext
       Loop   strMsg = strMsg & "Enter the ID of a logo to copy:"
       strPubID = InputBox(strMsg)   ' Copy the logo to a variable in chunks.
       rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
       lngLogoSize = rstPubInfo!logo.ActualSize
       Do While lngOffset < lngLogoSize
          varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
          varLogo = varLogo & varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   ' Get data from the user.
       strPubID = Trim(InputBox("Enter a new pub ID:"))
       strPRInfo = Trim(InputBox("Enter descriptive text:"))   ' Add a new record, copying the logo in chunks.
       rstPubInfo.AddNew
       rstPubInfo!pub_id = strPubID
       rstPubInfo!pr_info = strPRInfo
       lngOffset = 0   ' Reset offset.   Do While lngOffset < lngLogoSize
          varChunk = LeftB(RightB(varLogo, lngLogoSize - _ 
            lngOffset),conChunkSize)
          rstPubInfo!logo.AppendChunk varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   rstPubInfo.Update   ' Show the newly added data.
       MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _ 
         "Description: " & rstPubInfo!pr_info & vbCr & _ 
         "Logo size: " & rstPubInfo!logo.ActualSize   rstPubInfo.Close
       cn.CloseEnd Sub
      

  3.   

    直接插入是不行的,用AppendChunk方法
    Public Sub AppendChunkX()   Dim cn As ADODB.Connection
       Dim rstPubInfo As ADODB.Recordset
       Dim strCn As String
       Dim strPubID As String
       Dim strPRInfo As String
       Dim lngOffset As Long
       Dim lngLogoSize As Long
       Dim varLogo As Variant
       Dim varChunk As Variant   Const conChunkSize = 100   ' Open a connection.
       Set cn = New ADODB.Connection
       strCn = "Server=srv;Database=pubs;UID=sa;Pwd=;"   cn.Provider = "sqloledb"
       cn.Open strCn   'Open the pub_info_x table.
       Set rstPubInfo = New ADODB.Recordset
       rstPubInfo.CursorType = adOpenDynamic
       rstPubInfo.LockType = adLockOptimistic
       rstPubInfo.Open "pub_info_x", cn, , , adCmdTable   'Prompt for a logo to copy.
       strMsg = "Available logos are : " & vbCr & vbCr   Do While Not rstPubInfo.EOF
          strMsg = strMsg & rstPubInfo!pub_id & vbCr & _ 
            Left(rstPubInfo!pr_info,
             InStr(rstPubInfo!pr_info, ",") - 1) & vbCr & vbCr
          rstPubInfo.MoveNext
       Loop   strMsg = strMsg & "Enter the ID of a logo to copy:"
       strPubID = InputBox(strMsg)   ' Copy the logo to a variable in chunks.
       rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
       lngLogoSize = rstPubInfo!logo.ActualSize
       Do While lngOffset < lngLogoSize
          varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
          varLogo = varLogo & varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   ' Get data from the user.
       strPubID = Trim(InputBox("Enter a new pub ID:"))
       strPRInfo = Trim(InputBox("Enter descriptive text:"))   ' Add a new record, copying the logo in chunks.
       rstPubInfo.AddNew
       rstPubInfo!pub_id = strPubID
       rstPubInfo!pr_info = strPRInfo
       lngOffset = 0   ' Reset offset.   Do While lngOffset < lngLogoSize
          varChunk = LeftB(RightB(varLogo, lngLogoSize - _ 
            lngOffset),conChunkSize)
          rstPubInfo!logo.AppendChunk varChunk
          lngOffset = lngOffset + conChunkSize
       Loop   rstPubInfo.Update   ' Show the newly added data.
       MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _ 
         "Description: " & rstPubInfo!pr_info & vbCr & _ 
         "Logo size: " & rstPubInfo!logo.ActualSize   rstPubInfo.Close
       cn.CloseEnd Sub
      

  4.   

    楼上的是不是复制msdn上的啊,看不太明白,简单一点的有没有呢?谢谢了,急死我了。
      

  5.   

    用ADO.stream,参考一下SQLserver的
    http://support.microsoft.com/default.aspx?scid=kb;en-us;258038
    换成Oracle,没试过,你自己试试吧
      

  6.   

    有人说,oracle里面不支持ado里面stream。