Postgresql, JDBC, et la diffusion de Gouttes

Je suis en train de récupérer un blob à partir d'une base de données postgres en utilisant des pilotes jdbc. Il est trop grand pour avoir en mémoire donc je veux le lire en téléchargement. J'ai essayé d'utiliser le getBinaryStream méthode sur le jeu de résultats, mais il s'avère que cette méthode fait le lit de tous en mémoire, donc ne fonctionne pas pour les fichiers volumineux.

Apparemment, on peut utiliser la getBlob méthode sur le jeu de résultats et le presumeably obtenir le inputstream de la goutte et à partir de là, mais c'est là que je tombe sur mon problème.

PreparedStatement ps = con.prepareStatement("select data from file_data WHERE ID = ?");
ps.setLong(1,file.fileData.id)
ResultSet rs = ps.executeQuery()
if(rs.next()){
        rs.getBlob("data")

Qui est du code, je suis en cours d'exécution. Quand il arrive à la dernière ligne de lancer une erreur que je ne peut pas donner un sens...

org.postgresql.util.PSQLException: valeur incorrecte pour le type long : xxxxxx

"xxxxxx" est alors le contenu du fichier. Vous pouvez imaginer que devient assez long, mais pas vraiment le point.

Je suis coincé ici. Quelqu'un a une idée sur ce qui se passe? Diable, je vais même prendre d'autres méthodes pour la diffusion de gros blobs en téléchargement.

  • Dans mon cas, c'était rs.getBlob(...) au lieu de rs.getBinaryStream(...). Jamais trop tard pour apprendre JDBC.
InformationsquelleAutor CJ F | 2010-01-15