上次你帮我回复了一段 往SQL数据库里写.JPG图片的代码,运行有些问题,能帮忙解释下吗。
Private Sub cmdSave_Click()
            
          Dim rs     As New ADODB.Recordset
          Dim InterID     As String
          Dim strData     As String
          Dim fileNo     As Integer
          Dim LenF     As Long
          Dim BMPData()     As Byte
          Dim mFileName     As String
          '先保存图片
          mFileName = "c:\tt.jpg"
          SavePicture Picture1.Image, mFileName
          fileNo = FreeFile()
          '打开文件取出图形数据
          Open mFileName For Binary As #fileNo
          LenF = LOF(fileNo)
          ReDim BMPData(LenF)
          Get #fileNo, , BMPData
          Close #fileNo
          '保存到数据库中
          With rs
                  .ActiveConnection = sConnection
                  .LockType = adLockOptimistic
                  .Open "select   *   from   test   "
                  .AddNew
                  '字段FID为一个   int   型的主键
                  '字段FData为一个image   型的字段
                  .Fields("FID") = InterID
                  .Fields("FData").AppendChunk BMPData
                  .Update
          End With
          rs.Close
          Set rs = Nothing
            
            
  End Sub
  '得到
  Private Sub cmdLoad_Click()
    
    
          On Error GoTo H_Error
          Dim rsData     As New ADODB.Recordset
          Dim strData     As String, strBuffer       As String
          Dim LenF     As Long
          Dim BMPData()     As Byte
          '打开数据库
          With rsData
                  .ActiveConnection = sConnection
                  .CursorLocation = adUseClient
                  .Open "select   *   from   test"
                  '得到数据的长度
                  LenF = .Fields("FData").ActualSize
                  ReDim BMPData(LenF)
                  '得到图形文件的数据
                  BMPData = .Fields("FData").GetChunk(LenF)
          End With
          rsData.Close
          Set rsData = Nothing
          strBuffer = "c:\test.jpg"
          If Dir(strBuffer) <> "" Then
                  Kill strBuffer
          End If
          Dim fileNo     As Integer
          fileNo = FreeFile()
          Open strBuffer For Binary As #fileNo
          Put #fileNo, , BMPData
          Close #fileNo
          Picture1.Picture = LoadPicture(strBuffer)
          Exit Sub
H_Error:
          Debug.Assert False
  End Sub运行到 .ActiveConnection = sConnection 出现 实时错误 3001 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。麻烦高手看看我这里的错误在那里。

解决方案 »

  1.   

    sConnection连接数据库的Adodb.Connection你要自己建一个
      
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

    我定义了下 sConnection 通过了,我请问下 {.Fields("FID") = InterID} 这段代码有什么用呢,还有他的类型 你注释说是{字段FID为一个   int   型的主键} 好象不行 换成CHAR 可以吗?
      

  3.   

    feiyun0112 大哥 我弄的实在是不知道怎么弄了 能不能发段小程序到
    万分感谢。
      

  4.   

    feiyun0112 大哥  在吗 我在线等你邮件呢啊
      

  5.   

    我这里有个ACCESS数据库的例子:
    首先,添加引用Microsoft ActiveX Data Objects 2.5 Library
    例1:把图片文件存入数据库
        Dim cn As New ADODB.Connection
        cn.Open "DBQ=E:\db.mdb;Driver={Microsoft Access Driver (*.mdb)};"
        Dim s As New ADODB.Stream
        Dim rs As New ADODB.Recordset
        rs.Open "图片表", cn, adOpenDynamic, adLockOptimistic, adCmdTable
        s.Type = adTypeBinary
        s.Open
        s.LoadFromFile "e:\Camcord.bmp"
        rs.AddNew
        rs.Fields("image").Value = s.Read()
    rs.Update
    例2:把数据库中的图像数据导出为文件
    Dim cn As New ADODB.Connection
    cn.Open "DBQ=E:\db.mdb;Driver={Microsoft Access Driver (*.mdb)};"
    Dim s As New ADODB.Stream
    Dim rs As New ADODB.Recordset
    rs.Open "图片表", cn, adOpenDynamic, adLockOptimistic, adCmdTable
    s.Type = adTypeBinary
    s.Open
    s.Write rs.Fields("image").Value
    s.SaveToFile "e:\xxx.bmp"
    注:1.图片表的image字段类型为OLE 对象。
      

  6.   

    yachong(蚜虫)   有些SQL写入图片的例子吗
      

  7.   

    把连接字符串换成SQL Server 的试试吧,也许可以呢。
      

  8.   

    Dim cn As New ADODB.Connection
        cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=servername"    Dim rs As New ADODB.Recordset
     With rs
                      .ActiveConnection =cn
                      .CursorLocation = adUseClient
                      .Open "select   *   from   图片表"
                      .AddNew                  fileNo = FreeFile()
                     '打开文件取出图形数据
                     Open  "e:\Camcord.bmp" For Binary As #fileNo
                     LenF = LOF(fileNo)
                     ReDim BMPData(LenF)
                     Get #fileNo, , BMPData
                     Close #fileNo                   '字段image为一个image   型的字段
                      .Fields("image").AppendChunk BMPData
                      .Update
              End With
              rs.Close  
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  9.   

    feiyun0112 最开始你给我发的哪个代码我弄好了 但取图片时候有个问题
     '得到
      Private Sub cmdLoad_Click()
        
        
              On Error GoTo H_Error
              Dim rsData     As New ADODB.Recordset
              Dim strData     As String, strBuffer       As String
              Dim LenF     As Long
              Dim BMPData()     As Byte
              '打开数据库
              With rsData
                      .ActiveConnection = sConnection
                      .CursorLocation = adUseClient
                      .Open "select   *   from   test"
                      '得到数据的长度
                      LenF = .Fields("FData").ActualSize
                      ReDim BMPData(LenF)
                      '得到图形文件的数据
                      BMPData = .Fields("FData").GetChunk(LenF)
              End With
              rsData.Close
              Set rsData = Nothing
              strBuffer = "c:\test.jpg"
              If Dir(strBuffer) <> "" Then
                      Kill strBuffer
              End If
              Dim fileNo     As Integer
              fileNo = FreeFile()
              Open strBuffer For Binary As #fileNo
              Put #fileNo, , BMPData
              Close #fileNo
              Picture1.Picture = LoadPicture(strBuffer)
              Exit Sub
    H_Error:
              Debug.Assert False
      End Sub
    运行到  {Set rsData = Nothing}  时就先显示WITH没有设置, 我就把他注释掉了 就可以用了
    也不知道是为什么 也不明白那句话是做什么用的。