Byte Array in MySQL Datenbank schreiben/auslesen

hebel2

Grünschnabel
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
 
Hallo und herzlich Willkommen bei tutorials.de,

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
 
Zuletzt bearbeitet:
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
 
Java:
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.

Java:
con = DriverManager.getConnection("jdbc:mysql://localhost/blobtest?user=user&password=pw");
 
Zuletzt bearbeitet:
Zurück