tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
943
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hebel2 hebel2 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    4
    Hallo,

    ich möchte einen verschlüsselten Text welcher in einem Byte Array liegt in eine MySql Datenbank schreiben und wieder auslesen.
    Habe es jetzt mit so ziemlich jedem DatenTyp versucht der nur annähernd dazu geeignet wäre, leider will es einfach nicht funktionieren, bräuchte dringend hilfe.

    con = DriverManager.getConnection("jdbc:mysql://localhost/db", "user", "pw");

    PreparedStatement ps = con.prepareStatement("insert into blob(null,?,?");

    ps.setBytes(1, ecBytes);
    ps.setBytes(2, ecBytes);

    ps.executeUpdate();

    In dem ecBytes steht dann etwa so was drin wenn ich es mir als String ausgeben lasse.

    ÄÏÐv‚e´Á|‚náL„

    Und bei der Fehlermeldung steht so was:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'blob(null,'ÄÏÐv‚e´Á|‚náL„','ÄÏÐv‚e´Á|‚náL„'' at line 1

    MfG
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo und herzlich Willkommen bei tutorials.de,

    Bitte fasse bei deinen nächsten Posts Codeteile in [ java] ... [/java]-Tags ein, so ist die Sache viel einfacher zu lesen.

    Du hast mehrere Möglichkeiten, wie du Binärdaten in die Datenbank schreiben kannst. Eine Möglichkeit sind die Binary Large Objects (BLOBs), welche du anscheinend verwenden willst. Diese schreibst du mit der Methode setObject() in dein PreparedStatement, nicht mit der setBytes().

    Eine andere, meiner Meinung nach flexiblere Lösung wäre die Konvertierung der Bytes mit Hilfe der Base64-Kodierung. Somit kannst du die Daten als "Text" (varchar) in der Datenbank speichern und leichter mit ihnen arbeiten. Beim auslesen kannst du diese dann wieder zurück verwandeln und daraus die Bytes gewinnen.

    Infos: Base64 bei "Java ist auch eine Insel"

    Gruß
    BK
    Geändert von Bratkartoffel (28.09.10 um 13:21 Uhr) Grund: paar Ergänzungen
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    hebel2 hebel2 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    4
    Danke für deine Antwort, das nächste mal werd ich den Codeteil in die Tags setzen.
    Mit setObject() hatte ich es auch schon versucht, hatte auch nicht geklappt.

    Na ich werd mir mal die Lösung mit der Base64-Kodierung anschauen.

    MfG
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Zitat Zitat von hebel2 Beitrag anzeigen
    Mit setObject() hatte ich es auch schon versucht, hatte auch nicht geklappt.
    Inwiefern hat es nicht geklappt? Wurde eine Exception geworfen? Wenn ja, welche?

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    hebel2 hebel2 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    4
    Code java:
    1
    2
    3
    
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
     
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'blob(null,_binary'\"w ŽGI‹{:/þÒA*',_binary'\"w ŽGI‹{:/þÒA*'' at line 1

    Das gibt er als Fehler aus.

    Hab jetzt die Connection geändert weil ich die falsche DB angegeben hatte.

    Code java:
    1
    
    con = DriverManager.getConnection("jdbc:mysql://localhost/blobtest?user=user&password=pw");
    Geändert von hebel2 (28.09.10 um 14:34 Uhr)
     

  6. #6
    hebel2 hebel2 ist offline Grünschnabel
    Registriert seit
    Sep 2010
    Beiträge
    4
    Danke, geht jetzt hatte nen Fehler im SQL Befehl.
     

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 13.04.10, 18:39
  2. Antworten: 5
    Letzter Beitrag: 22.02.10, 12:05
  3. Image in ein byte array schreiben
    Von MCH im Forum Java
    Antworten: 1
    Letzter Beitrag: 30.06.08, 07:08
  4. Bild in ein Byte Array schreiben
    Von sand13r im Forum Java
    Antworten: 2
    Letzter Beitrag: 27.10.06, 08:22
  5. Antworten: 8
    Letzter Beitrag: 19.04.06, 08:29