In einem schreiben an einen neuen Blob in Java
Ich möchte in der Lage sein erstellen Sie einen neuen Blob-Objekt und dann schreiben. Ursprünglich, meine Allgemeine plan war wie folgt:
Erstellen Sie ein neues blob (null, weil es keine Blob-Konstruktor)
Erstellen Sie eine neue Ausgabestrom und stellen Sie es an blob.setBinaryStream(0)
Schreiben Sie den Ausgabe-stream.
Allerdings bekomme ich eine NullPointerException wenn ich versuche, diesen code ausführen. Gibt es einen anderen Weg sollte ich gehen über diese? Jede Hilfe würde geschätzt werden.
Dank!
~B
- Ist das ein
java.sql.Blob
dass Sie möchten, um in eine Datenbank schreiben? - "Allerdings bekomme ich eine NullPointerException wenn ich versuche, diesen code ausführen" - DUH! Ich würde vorschlagen, re-Lesen Sie Ihre eigene Frage...bist du versucht, eine Methode aufzurufen, die auf einem
null
Referenz...meine Güte! - sehr wahrscheinlich ja.
setBinaryStream
ist eine Methode derjava.sql.Blob
. - Ich denke, dass Howard die Antwort wird zeigen Sie in die richtige Richtung.
PreparedStatement
hat auch einesetBinaryStream
Methode.- ja, aber der Punkt war, dass OP nicht zu sein scheinen etwas zu tun mit einer Datenbank in den ersten Platz; zumindest war es nicht ersichtlich aus der Frage.
- Sie müssen nicht unhöflich sein! @alle anderen: wir versuchen NICHT, dies zu schreiben, um eine Datenbank, und wir sind nicht die Zeichnung aus einer Datenbank (offensichtlich, sonst würde ich nicht versuchen, sich mit einem null-blob) - so PreparedStatements nicht in die Karten, @Vineet ist richtig. 🙂
- die java.sql.* Klassen dazu gedacht sind, die in einem Kontext verwendet, wo SQL und JDBC beteiligt sind. Sie sollten über eine entsprechende Klasse aus einem anderen Paket. Vielleicht ByteBuffers werden, was Sie brauchen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
java.sql.Blob
ist ein interface und keine Klasse ist, also kein Konstruktor vorhanden sein können. Aber Sie instanziieren können die implementierende KlasseSerialBlob
welche Ihnen erlaubt, zu konstruieren, ein blob aus einem byte-array.Ja, das ist keine überraschung - Sie erhalten einen
NullPointerException
wenn Sie versuchen, aufrufen einer Methode auf eine variable, dienull
(wie ist deinblob
variable).Sollten Sie rufen
setBinaryStream
auf IhrePreparedStatement
Objekt statt. Angenommen, Sie haben die Daten, die in einembyte[]
, dann könnte man etwas wie das hier tun:Blob
wenn du nicht gehst, um es in die Datenbank?Wenn Sie möchten, verwenden Sie das Blob in einem CallableStatement oder ein PreparedStatement, die Sie nicht wirklich brauchen, erstellen Sie ein Blob-Objekt selbst. Die
setBlob
Methoden kommen in Aromen, die einen InputStream anstelle eines Blob-Objekt. Sie könnten zum Beispiel schreiben in ein ByteArrayOutputStream, rufen Sie die byte-array, und dann wickeln, dass in einem ByteArrayInputStream. Oder Sie konnte piped-streams.position
Methoden.)