2013-03-22 4 views
0

Когда я делаю вставку в удаленном tabke с помощью jconnect он дает мне следующую ошибку:Ошибка вставки в удаленной таблице с помощью jconnect

Unexpected exception : java.sql.SQLException: This transaction has been rolled back, rather than only the current statement. 
, sqlstate = ZZZZZjava.sql.SQLException: This transaction has been rolled back, rather than only the current statement. 

    at com.sybase.jdbc4.jdbc.SybConnection.getAllExceptions(SybConnection.java:2780) 
    at com.sybase.jdbc4.jdbc.SybStatement.handleSQLE(SybStatement.java:2665) 
    at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:295) 
    at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:272) 
    at com.sybase.jdbc4.jdbc.SybStatement.updateLoop(SybStatement.java:2515) 
    at com.sybase.jdbc4.jdbc.SybStatement.executeUpdate(SybStatement.java:2499) 
    at com.sybase.jdbc4.jdbc.SybStatement.executeUpdate(SybStatement.java:577) 
    at connectSybase.main(connectSybase.java:48) 

Вы знаете, что это может быть?

Вот мой полный код:

import java.io.*; 
import java.sql.*; 

public class connectSybase { 

    public static void main(String args[]) 
    { 
     try 
     { 
      // jconn3 <-- do pessoal do OMS 
      //Class.forName("com.sybase.jdbc3.jdbc.SybDriver"); 

      // jconn4 <-- do servidor de OMS1_PAR_DEV_SQL 
      Class.forName("com.sybase.jdbc4.jdbc.SybDriver"); 

     } 
     catch (ClassNotFoundException cnfe) 
     { 
      System.out.println("BUM!"); 
     } 
     try 
     { 
      System.out.println("Any of the following may throw an SQLException."); 

      System.out.println("Opening a connection."); 

      Connection con = java.sql.DriverManager.getConnection 
        ("----------------------------"); 
      // more code to use connection ... 


      System.out.println("Creating a statement object."); 

      Statement stmt = con.createStatement(); 

      System.out.println("Executing the query."); 

      ResultSet rs = stmt.executeQuery("Select top 10 * from OMS_DEV..SCRIBE_AR"); 

      System.out.println("Process the result set."); 

      while (rs.next()) 
      { 
       System.out.println("Fetched value " + rs.getString(1)); 
      } 

      System.out.println("Executing the query."); 
      int result = stmt.executeUpdate("---------------"); 


      System.out.println("Process the result set: " + result); 

     } 

     catch (SQLException sqe) 
     { 
      sqe.printStackTrace(); 


      System.out.println("Unexpected exception : " + 
        sqe.toString() + ", sqlstate = " + 
        sqe.getSQLState()); 
      System.exit(1); 
     } 
     System.exit(0); 
    } 
} 

я опустил вставки и соединения, но и работу, потому что я получаю результат первого выбора (только вставки терпит неудачу) и вставка тоже правильно, потому что он работает с использованием isql или dbartisan.

+0

Sybase ошибка. Я открыл случай @ Sybase! :) –

ответ

0

Сообщение об ошибке Sybase не было специфическим, но проблема была связана с размером пакета. В ASE это было 8192, а в IQ - только 2048.

Он сгенерировал ошибку, когда пакет превысил 2k.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. –

+0

Роджер это! Я напишу больше информации и ответ, когда дело будет решено. –

+0

@RomanC Ответ теперь правильный, я надеюсь. –