Hallo,
ich habe folgendes Problem:
Ich schreibe mit folgender Syntax ein byteArray (Java - JDBC) in eine Tabelle meiner Datenbank. Dies funtioniert auch wunderbar. Wenn ich mir danach mit einem Datenbanktool die Tabelle anschaue ist da ein Binary mit 27 Bytes drin. Soweit alles gut.
/\*
\* prepare byte[]
\*/
String testString = "Hallo, dies ist ein Test...";
byte[] result = null;
try {
result = testString.getBytes("UTF-8");
} catch (UnsupportedEncodingException UEEx) {
System.out.println("Errors occured while converting xml: " + UEEx.getMessage());
}
/\*
\* Insert byte[]
\*/
try {
con = DriverManager.getConnection(URL, USER, PASS);
PreparedStatement pstmt = con.prepareStatement("UPDATE BlobExample SET Content = ? WHERE (Id = 1)");
pstmt.setBytes(1, result);
pstmt.executeUpdate();
pstmt.close();
} catch (BatchUpdateException e) {
System.out.println(message2 + e.getMessage());
} catch (SQLException e) {
System.out.println(message1 + e.getMessage());
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
Nun lese ich dieses ByteArray wieder zurück und lasse es mir ausgeben:
byte[] test = null;
/\*
\* get byte[] from db
\*/
try {
con = DriverManager.getConnection(URL, USER, PASS);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT Content FROM BlobExample");
System.out.println(":::");
while (rs.next())
test = rs.getBytes(1);
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
return;
} finally {
if (con != null)
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/\*
\* Show content
\*/
System.out.println("Content: " + result.length);
System.out.println("Content: " + new String(result));
System.out.println("Content: " + test.length);
System.out.println("Content: " + new String(test));
Die oberen zwei Zeilen geben mir das ursprüngliche byte[] aus (Inhalt korrekt und Länge 27, auch richtig). Die unteren Zeilen das was aus der Datenbank zurückkommt (Inhalt nicht sichtbar und Länge 86!!!).
Was mache ich verkehrt? Wie mache ich es richtig?
Gruß vom Pianoman