我的想法的是COMMONDIAGLOG控件得图片的文件名;
然后将些图片存入数据库;
我不知道用什么控件或者方法,图片存入数据库?
请高手指点下了;

解决方案 »

  1.   

    使用流对象保存和显示图片 
    打开vb6,新建工程。添加两个按钮,一个image控件
    注意:Access中的photo字段类型为OLE对象.
    SqlServer中的photo字段类型为Image'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    ‘2.5版本以下不支持Stream对象
    Dim iConcstr As String
    Dim iConc As ADODB.Connection
     '保存文件到数据库中
    Sub s_SaveFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConcstr As String    '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary   '二进制模式
            .Open
            .LoadFromFile App.Path + "\test.jpg"
        End With
           '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "select * from img", iConc, 1, 3
            .AddNew         '新增一条记录
            .Fields("photo") = iStm.Read
            .Update
        End With
          '完成后关闭对象
        iRe.Close
        iStm.Close
    End Sub
    Sub s_ReadFile()
        Dim iStm As ADODB.Stream
        Dim 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.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write iRe("photo")
    ‘这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误.
            .SaveToFile App.Path & "\test1.jpg"
        End With
           Image1.Picture = LoadPicture(App.Path & "\test1.jpg")
       '关闭对象
        iRe.Close
        iStm.Close
    End Sub
     Private Sub Command1_Click()
    Call s_ReadFile
    End Sub
    Private Sub Command2_Click()
    Call s_SaveFile
    End Sub
    Private 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.Connection
       iConc.Open iConcstr
    End Sub
     Private Sub Form_Unload(Cancel As Integer)
    iConc.Close
    Set iConc = Nothing
    End Sub
      

  2.   

    Public Const CHUNKSIZE As Long = 16384 ' internal chunksize
    Public Sub SaveToDatabase(ado As Recordset, fieldname As String, filepath As String)
    'Dim ado As New ADODB.Recordset
    Dim lLen As Long
    Dim lCount As Long
        Dim lFragment As Long
        Dim lChunks As Long
        Dim bChunk() As Byte
        Dim iFileNum As Integer
        Dim oField As Field
        Dim msfilename As String
        Dim FILENAME As String
    msfilename = filepath
    'Call ConnectToSQL
    'ado.Open sqlstring, GYConn, adOpenStatic, adLockOptimistic
        iFileNum = FreeFile
        Open msfilename For Binary Access Read As iFileNum
        lLen = LOF(iFileNum)
        lChunks = lLen \ CHUNKSIZE
        lFragment = lLen Mod CHUNKSIZE
        ReDim bChunk(lFragment)
        Get iFileNum, , bChunk
        Set oField = ado.Fields(fieldname)
        oField.Value = ""
        oField.AppendChunk bChunk
        ReDim bChunk(CHUNKSIZE)
        For lCount = 1 To lChunks
            Get iFileNum, , bChunk()
            oField.AppendChunk bChunk
        Next
        Close iFileNum
        ado.Update
        Set ado = Nothing
    End Sub
    Sub ReadDataFromDatabase(ado1 As Recordset, fieldname As String, filepath As String)
     Dim iFileNum As Integer
        Dim lFileLen As Long
        Dim lChunks As Long
        Dim lFragment As Long
        Dim bChunk() As Byte
        Dim lCount As Long
        Dim oField As Field
        Dim oRS As Recordset
    '     Dim ado1 As New ADODB.Recordset
         Dim sFileName As String     sFileName = filepath
    '        Set oField = oRS.Fields("file")
    'ado1.Open sqlstring, GYConn, adOpenStatic, adLockOptimistic
    ado1.MoveFirst
    'If ado1.Fields(FieldName) = Null Then
    'Exit Sub
    'End If
        iFileNum = FreeFile
        Open sFileName For Binary Access Write As iFileNum
        Set oField = ado1.Fields(fieldname)
        lFileLen = oField.ActualSize
        lChunks = lFileLen \ CHUNKSIZE
        lFragment = lFileLen Mod CHUNKSIZE
        For lCount = 1 To lChunks
            ReDim bChunk(CHUNKSIZE)
            bChunk() = oField.GetChunk(CHUNKSIZE)
            Put iFileNum, , bChunk()
        Next
    If lFragment <> 0 Then
        ReDim bChunk(lFragment)
        bChunk() = oField.GetChunk(lFragment)
        Put iFileNum, , bChunk()
            End If
        Close iFileNum
        ado1.Update
     End Sub这里的2个函数你可以将任何文件保存到数据库中以及从数据库中读取出相应的文件保存到外部文件呵呵,来迟了,不过没关系,分点分就行了
      

  3.   

    我在VB6.0中.
     Leftie(左手,为人民币服务)给的方法,好像是ASP.NET中的方法;
    高手们,只要给予支持我都会给分的.
    可以直接传分嘛?
      

  4.   

    我重新说下我的问题吧:
     
    我有用的是VB 6.0不是.NET
    我首先在要窗体上,
    给出一个控件,
    1.让用户选择一个或者多个图片.2.将用户的选择的图片存入一个表中.3.然后我根据表能查询图片,并要在窗件上显示请高手给我说下思路,用什么控件,用什么方法.
    如果有源代码,当然:)
    急,真诚谢谢.要分我可以单独给的.
      

  5.   

    真要啊?你要就要说出来呀,你不说我怎么知道你要?就算你这么诚恳的看着我,可是你还是得说出来啊?哈哈。大话西游的经典都快忘记了,晚上回去再温习一遍先!我可以传给你一份完整的,包含增加,修改,删除,查询的全部代码,数据库用ACCESS做
      

  6.   

    Leftie(左手,为人民币服务) :['打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "select * from img", iConc, 1, 3
            .AddNew         '新增一条记录
            .Fields("photo") = iStm.Read
            .Update
        End With]现在用的方法完全可以实现图片的存入,和读取;
    如果我不用Update.要用Insert的话:
    我用什么类型的变量来接受iStm.Read得到的流文件;
    我试了insert p values('"& iStm.Read &"')",报字符串间有未完全的引号的错;
    请高手指点