2016-06-22 2 views
0

Ich habe Probleme beim Einfügen in meine ORACLE ddbb mit PreparedStatement. Es scheint mit dem Blob-Datentyp verwandt zu sein, als ich handle. In diesem Link changing type war die Lösung, den Typ der Daten von Blob zu String zu ändern, aber das ist nicht, was ich suche. Ich muss einen Blob in meinen Tisch einfügen.Getting ORA-00942: Tabelle oder Sicht existiert nicht mit Blob in Java

Hier ist mein Code:

public void insert(Connection conn , String id, String imageName, byte[] image) throws Exception { 

    PreparedStatement ps = null; 

    Blob img = conn.createBlob(); 
    img.setBytes(1, image); 

    try { 

     String sql = "INSERT INTO MY_OWNER.IMAGE_TABLE " 
       + "(ID, IMAGE_NAME, BLOB_IMAGE) " 
       + "VALUES (?, ?, ?) "; 

     ps = conn.prepareStatement(sql); 

     ps.setString(1, id); 
     ps.setString(2, imageName); 
     ps.setBlob(3, img); 

     ps.executeUpdate(); 

     conn.commit(); 

    } catch (Exception e) { 

     conn.rollback(); 
     throw new Exception (e); 

    } finally { 

     if (ps != null) { 
      ps.close(); 
     } 
     if (conn != null) { 
      conn.close(); 
     } 

    } 

} 

Ich bin sicher, Privilegien und auch sicher über die Syntax. Wie ich schon sagte, ich glaube der Blob stört. Hier

ist der Fehler:

java.lang.Exception: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist 

Verursacht durch: java.sql.SQLSyntaxErrorException: ORA-00942: Tabelle oder Sicht ist nicht vorhanden

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) 
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837) 
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445) 
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) 
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523) 
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) 
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010) 
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315) 
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576) 
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657) 
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350) 

Haben Sie eine Idee haben, was alles Über?

Danke !!!

Antwort

0

Es tut mir leid Kollegen :-P

Am Ende, als der ORACLE-Fehler über Zuschüsse war, war es ein gewährt Problem ... ich habe es nicht erkennen, weil die Verbindung zum DDBB war Verwenden eines anderen Benutzers zum Herstellen einer Verbindung. Die Lösung bestand offensichtlich darin, diesem Benutzer die richtigen Berechtigungen zu geben.

Noch einmal, Entschuldigung für Ihre Zeit verlieren!

Verwandte Themen