L'insertion de byte[] tableau comme blob dans la Base de données Oracle arriver ORA-01460: non mises en œuvre ou déraisonnable de la conversion demandée

J'ai un java procédure stockée que j'essaie d'insérer un byte[] tableau en un oracle champ blob dans un tableau.

- Je créer une instruction préparée comme suit, mais il va échouer aléatoirement quand je exécuter l'instruction préparée. J'ai rétréci vers le bas que le problème vient de la pstmt.setBytes(4,contenu). L'erreur que j'obtiens est:

ORA-01460: non mises en œuvre ou déraisonnable de la conversion demandée.

private static void insertFile(Connection connOracle, int zipFileId, byte[] data, String filepath, String filename ) throws SQLException {

try {
    String QUERY = "INSERT INTO files(file_id, zip_file_id, filename, file_path, content) VALUES(SEQ_FILE_ID.nextval,?,?,?,?)";

    PreparedStatement pstmt = connOracle.prepareStatement(QUERY);

    pstmt.setInt(1,zipFileId);
    pstmt.setString(2, filename);
    pstmt.setString(3, filepath);
    pstmt.setBytes(4, data);

    System.out.println("INSERTING file_id " + filepath + ", " + filename + " INTO DATABASE");

    pstmt.execute();
    pstmt.close();
}
catch (SQLException e) {
    throw new SQLException(e.getMessage());  
}
  • T-il se passer lorsque le contenu est null ou une chaîne vide?
  • non, si j'en commentaire la 4ème param ensuite tout fonctionne très bien.
  • Supprimé ma réponse maintenant que la question a été corrigé... est data non-nulle?
  • Je voulais dire: est-ce qu'il se passera lorsque data est null ou une chaîne vide?
  • non, il ne se produira pas si les données sont nulles, cela n'arrive que lorsqu'il est contenu dans le byte[] tableau
  • Peut-être, voir ce fil: stackoverflow.com/questions/862355/...

InformationsquelleAutor medium | 2011-10-17