汽车到了地衡上自动采集地衡的数据然后,地衡两边的摄象头将车牌号码拍下存到D盘的一个文件夹中,那位高手知道怎么将当时拍的照片放到服务器中的SQL数据库中。

解决方案 »

  1.   

    数据库的Image类型可以存图片等二进制文件,不过存取的操作有点复杂;
    建议将图片的文件名存到数据库中,读取的时候根据文件名再到图片文件夹下找图片即可,这样比较简单;
      

  2.   

    用ado可以把图片存储(二进制)到数据库的image类型字段
      

  3.   

    如果一定要将图片数据保存到SQL中的话,可以使用image类型字段,保存时将图片数据保存进该字段,读取时将该字段数据存到本地的临时文件中,再加载到控件中。'-----------------------------------------------------------
    '将图像文件转换成长二进制数据并写入到数据库中
    '--Stanley  2007/05/18
    '-----------------------------------------------------------
    Public Sub SaveFileToDB(Fld As ADODB.Field, DiskFile As String)
        Dim byteData() As Byte '定义数据块数组
        Dim NumBlocks As Long '定义数据块个数
        Dim FileLength As Long '标识文件长度
        Dim LeftOver As Long '定义剩余字节长度
        Dim SourceFile As Long '定义自由文件号
        Dim i As Long '定义循环变量
        Const BLOCKSIZE = 4096 '每次读写块的大小
        On Error GoTo ErrorHandle
        
        SourceFile = FreeFile '提供一个尚未使用的文件号
        Open DiskFile For Binary Access Read As SourceFile '打开文件
        FileLength = LOF(SourceFile) '得到文件长度
        If FileLength = 0 Then '判断文件是否存在
            Close SourceFile
            MsgBox DiskFile & "无内容或不存在!", vbOKOnly + vbCritical, "提示"
            Exit Sub
        Else
            NumBlocks = FileLength \ BLOCKSIZE '得到数据块的个数
            LeftOver = FileLength Mod BLOCKSIZE '得到剩余字节数
            Fld.value = Null
            ReDim byteData(BLOCKSIZE) '重新定义数据块的大小
            For i = 1 To NumBlocks
                Get SourceFile, , byteData() ' 读到内存块中
                Fld.AppendChunk byteData() '写入FLD
            Next i
            ReDim byteData(LeftOver) '重新定义数据块的大小
            Get SourceFile, , byteData() '读到内存块中
            Fld.AppendChunk byteData() '写入FLD
            Close SourceFile '关闭源文件
        End If
        
        Exit Sub
    ErrorHandle:
        MsgBox Err.Description, vbOKOnly + vbCritical, "读图像文件出错!"
        
    End Sub
    '-----------------------------------------------------------
    '从数据库中读取长二进制数据并写入到图像文件中
    '--Stanley  2007/05/18
    '-----------------------------------------------------------
    Public Function ReadDBToFile(Fld As ADODB.Field, DiskFile As String) As Boolean
        Dim FileNumber As Integer '文件号
        Dim DataLen As Long '文件长度
        Dim Chunks As Long '数据块数
        Dim ChunkAry() As Byte '数据块数组
        Dim ChunkSize As Long '数据块大小
        Dim Fragment As Long '零碎数据大小
        Dim lngI As Long '计数器
        On Error GoTo ErrorHandle
        
        ReadDBToFile = False
        ChunkSize = 2048 '定义块大小为 2K
        DataLen = Fld.ActualSize '获得图像大小
        If DataLen < 8 Then Exit Function '图像大小小于8字节时认为不是图像信息
        
        FileNumber = FreeFile '产生随机的文件号
        Open DiskFile For Binary Access Write As FileNumber '打开存放图像数据文件
        Chunks = DataLen \ ChunkSize '数据块数
        Fragment = DataLen Mod ChunkSize '零碎数据
        ReDim ChunkAry(ChunkSize - 1) '为数据块重新开辟空间
        For lngI = 1 To Chunks '循环读出所有块
            ChunkAry = Fld.GetChunk(ChunkSize) '在数据库中连续读数据块
            Put FileNumber, , ChunkAry() '将数据块写入文件中
        Next lngI
        If Fragment > 0 Then '有零碎数据,则先读该数据
            ReDim ChunkAry(Fragment - 1)
            ChunkAry = Fld.GetChunk(Fragment)
            Put FileNumber, , ChunkAry '写入文件
        End If
        Close FileNumber '关闭文件
        
        ReadDBToFile = True
        Exit Function
    ErrorHandle:
        ReadDBToFile = False
        MsgBox Err.Description, vbOKOnly + vbCritical, "读图像数据出错!"
    End Function
      

  4.   

    Private Sub SaveFile()   '保存文件到数据库中
    On Error Resume Next
        Dim Stm As New ADODB.Stream '使用ADODB.Stream来保存/读取文件到数据库
        '读取文件到内存(二进制模式)
        With Stm
            .Type = adTypeBinary
            .Open
            .LoadFromFile DtFlag
        End With
            RssW.Fields("dtwz") = Stm.Read
            RssW.Update
        Stm.Close
        Set Stm = Nothing
    End SubPrivate Sub ReadFile()
    On Error Resume Next
    Dim Stm As New ADODB.Stream
    '保存到文件
    With Stm
    .Mode = adModeReadWrite
    .Type = adTypeBinary
    .Open
    .Write RssW("dtwz")
    .SaveToFile App.Path + "\image.jpg"
    End With
    DtFlag = App.Path + "\image.jpg"
    Stm.Close
    Set Stm = Nothing
    End Sub
    看看这个能不能看明白了
      

  5.   

    怪我没把问题说清楚,具体的流程是这个样子的,图片存放的位置不是本地的D盘中,而是放在另外一台计算机中的“D:\Picture\20070701.gif”中,这台计算机的IP是"192.168.0.12",下一步是将图片放到编写的程序的PICTUR控件中,然后是将图片保存到服务器
    (IP为“192.168.1.11”)数据库"GJ1220"中,表名为cardate,字段名为Cfimage.