首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jconnect在远程表中插入时出错

使用jconnect在远程表中插入时出错
EN

Stack Overflow用户
提问于 2013-03-23 00:45:09
回答 1查看 578关注 0票数 0

当我使用jconnect在远程tabke中执行插入操作时,会出现以下错误:

代码语言:javascript
复制
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)

你知道这可能是什么吗?

下面是我的完整代码:

代码语言:javascript
复制
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);
    }
}

我省略了insert和connection,但两者都可以工作,因为我得到了第一次select的结果(只有insert失败),而且insert也是正确的,因为它使用isql或dbartisan工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-17 17:43:48

Sybase错误消息不是特定的,但问题与数据包大小有关。在ASE中是8192,而在IQ中只有2048。

当数据包超过2k时会产生错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15575671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档