2016-11-21 6 views
4

Ich habe einen Code, der ein Bild von Bildbox (Bild in Vb6) nach SQL speichert den Datentyp von diesem ist Image und hier ist die Ausgabe davon.Bild von Picturebox mit SQL vergleichen Image data type

Column Name = Picture 

enter image description here

Meine Frage ist, wie kann ich vergleichen das Bild von hier

enter image description here

in meine SQL-Datenbank? Mein Ziel ist es, zu überprüfen, ob das Bild in image3 in meiner Datenbank vorhanden ist.

Hier ist mein Code und es funktioniert nicht.

Dim arrImageByte() As Byte 
Dim strPhotoPath As String 
strPhotoPath = Image3.Picture & ".jpg" 
Set rs = New ADODB.Recordset 

Open strPhotoPath For Binary As #1 
ReDim arrImageByte(FileLen(strPhotoPath)) 
     fNum = FreeFile() 
     Open strPhotoPath For Binary As #fNum 
     Get #fNum, , arrImageByte 
     Close fNum 

    Text1.Text = FreeFile 
    rs.Open "select * from tbl_image with (nolock) where CONVERT(varbinary,[picture]) = '" & Text1.Text & "'", sql, 1, 1, 1 


If rs.RecordCount = 0 Then 
    MsgBox "Image exist" 
Else 
    MsgBox "Image does not exist." 
End If 

Ich denke, der beste Weg, dies zu tun, ist image3 in binäre (Picture Column) und führen Sie den Auswahlbefehl zu konvertieren.

Bitte Ich hoffe jemand kann mir helfen, mit dieser

TYSM

+0

haben Sie versucht, dies zu tun eine gespeicherte Prozedur mit? Sie könnten Ihre Nachrichten usw. beschneiden. –

Antwort

1

Dies sollte funktionieren, habe ich ein paar Änderungen vorgenommen und hoffe, das hilft.

  1. Ich verwende einen Befehl wie ich sie nie sicher sein, die Daten vertrauen, auch nur, wenn ich jemals das Programm
  2. ich WITH(NOLOCK) dies für Indizes ist schlecht entfernt verwenden und die Leistung verringern kann.
  3. änderte Ihre if-Anweisung zu >0 anstelle von =0, denn wenn Sie Ergebnisse erhalten, würde es zeigen Bild existiert nicht.

    Dim arrImageByte() As Byte 
    Dim strPhotoPath As String 
    strPhotoPath = Image3.Picture & ".jpg" 
    Set rs = New ADODB.Recordset 
    
    Open strPhotoPath For Binary As #1 
    ReDim arrImageByte(FileLen(strPhotoPath)) 
         fNum = FreeFile() 
         Open strPhotoPath For Binary As #fNum 
         Get #fNum, , arrImageByte 
         Close fNum 
    
        Text1.Text = FreeFile 
        Set cmd = New ADODB.Command 
        cmd.ActiveConnection = sql 
        cmd.CommandText ="SELECT * FROM tbl_image where " & _ 
         "CONVERT(varbinary,[picture]) = CONVERT(varbinary,?)" 
        cmd.Parameters(1)=Text1.Text 
        rs = cmd.Execute() 
    'Change this 
    If rs.RecordCount > 0 Then 'instead of = 
        MsgBox "Image exist" 
    Else 
        MsgBox "Image does not exist." 
    End If