2010-08-18 6 views
-2

J'ai écrit un programme Java dans lequel je peux insérer des images dans mon blob de base de données Oracle. Cela fonctionne parfaitement sur d'autres systèmes, mais ne fonctionne pas dans mon système lorsque je veux insérer une image de taille supérieure à 2kb. Mais à partir de mon système, je suis capable de récupérer des images de toute taille. La même application fonctionne bien dans un autre système mais se comporte anormalement, et parfois ne peut pas lire à partir d'une exception de socket lorsque j'essaie d'insérer une image supérieure à 2 ko. S'il vous plaît aider. J'utilise le pilote typ4.Chargement d'un blob dans une base de données en Java

Suite est ma structure de table ::

Name             Null? Type 
----------------------------------------------------- -------- ---------------------- 
NAME             NOT NULL VARCHAR2(20) 
DESCRIPTION           NOT NULL VARCHAR2(20) 
IMAGE             NOT NULL BLOB 

Ce qui suit est mon programme Java pour insérer l'image. Encore une fois, cela fonctionne sur d'autres systèmes dans le même réseau, qui sont connectés au même serveur Oracle. Mais du système montrant le problème quand j'essaye de télécharger une image ayant la taille plus que 2kb.

package com.smruti.image; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 
import java.sql.*; 

public class InsertImage { 
    private static String url = "jdbc:oracle:thin:@server3:1521:server3"; 
    private static String username = "system"; 
    private static String password = "manager"; 

    public static void main(String[] args) throws Exception { 
    Connection conn = null; 
    InputStream fis = null; 
    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     conn = DriverManager.getConnection(url, username, password); 
     conn.setAutoCommit(false); 

     String sql = "INSERT INTO pictures VALUES (?, ?, ?)"; 
     PreparedStatement stmt = conn.prepareStatement(sql); 
     stmt.setString(1, "scare.jpg"); 
     stmt.setString(2, "scare image"); 

     File image = new File("C:\\images.jpeg"); 
     fis = new FileInputStream(image); 
     int ilen=(int) image.length(); 
     System.out.println(ilen); 
     System.out.println(fis); 
     stmt.setBinaryStream(3, fis, ilen); 
     stmt.execute(); 

     System.out.println("this is upto b4 commit"); 
     conn.commit(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     if (fis != null) { 
      fis.close(); 
     } 
     if (conn != null && !conn.isClosed()) { 
      conn.close(); 
     } 
    } 
    } 
} 
+1

Pourriez-vous montrer une partie de votre code Java? –

+0

Vous devez fournir beaucoup plus d'informations, telles que la définition de la table et le code java qui insère l'image. –

Répondre

0

moi aussi face à la même question que je ne pouvais pas télécharger plus de fichiers 2kb ... upadting le pilote oracle jdbc à ojdbc5.jar résolu ce problème.

2

This external discussion thread indique qu'il peut s'agir d'un problème de pilote jdbc. Ils recommandent de mettre à jour les pilotes minces oracle jdbc.

Questions connexes