Databases Reference
In-Depth Information
String insert = "insert into pictures values(0, ?)";
PreparedStatement prepared = con.prepareStatement(insert);
InputStream is = new FileInputStream(new File("donald.jpg"));
prepared.setBinaryStream(1, is);
prepared.executeUpdate();
prepared.close();
is.close();
Wollen wir mit select -Anweisungen ein Bild aus der Tabelle lesen und es in eine
Datei schreiben, nutzen wir dazu die zum Typ ResultSet gehörende Methode
getBinaryStream . Sie liefert einen Stream, den wir auslesen und dann Byte für
Byte in eine Datei schreiben:
String select = "select id, image from pictures where id=0";
ResultSet results = statement.executeQuery(select);
results.next();
int id = results.getInt(1);
Blob blob = results.getBlob(2);
InputStream in = blob.getBinaryStream();
OutputStream out = new FileOutputStream(new File(id + ".jpg"));
byte[] buffer = new byte[0xFFFF];
for (int len; (len = in.read(buffer)) != -1;)
out.write(buffer, 0, len);
out.close();
in.close();
results.close();
statement.close();
null -Werte: Als hätten uns null -Werte nicht schon genug gequält, verfolgen sie
uns auch noch in JDBC.
Wenn in unserer Tabelle reihen einer der Werte in der Spalte baende den Wert
null hat, liefert uns - etwa in Listing 18.1 - die Methode getInt für diese Spalte
den Wert 0 . Wir können also nicht unterscheiden, ob wir es mit der Zahl 0 oder
dem Wert null zu tun hatten. Dieses Verhalten müssen wir selbstverständlich
beachten und setzen dazu die zum Typ ResultSet gehörige Methode wasNull
ein:
String select = "select baende from reihen where id=25";
ResultSet results = statement.executeQuery(select);
results.next();
int volumes = results.getInt("baende");
String text = results.wasNull() ? "null" : volumes + "";
System.out.println(text);
results.close();
Search WWH ::




Custom Search