无法从MySQL迁移到Derby:无效的游标状态 - 没有当前行

时间:2014-01-15 04:15:13

标签: java mysql jdbc derby

我的程序在连接到MySQL数据库时工作正常,但现在我将它连接到嵌入式Derby文件数据库,它不再插入新行。

每当我尝试插入新行时,都会收到错误:

java.sql.SQLException:无效的游标状态 - 没有当前行。

堆栈跟踪指的是我的表模型中的getValueAt()函数中的某一行:

    public Object getValueAt(int row, int column)
    {
        Object object = null;

        try 
        {
            resultSet.absolute(row + 1);

            object = resultSet.getObject(column + 1);  // <---------

            return object;
        } 
        catch (SQLException se) 
        {
            se.printStackTrace();
        } 

        return "";
    }

但我很确定这会导致错误,因为首先没有插入行。

这是我的表模型中的addRow()方法:

    public void addRow(Object[] newRow)
    {       
        try
        {
            resultSet.moveToInsertRow();

            for (int i = 0; i < newRow.length; i++)
            {
                resultSet.updateObject(i + 2, newRow[i]);
            }

            resultSet.insertRow(); 

            rowCount++;

            fireTableRowsInserted(rowCount - 1, rowCount - 1);
        }
        catch (SQLException se)
        {
            se.printStackTrace();
        }
    }

(resultSet.updateObject中的i + 2(i + 2,newRow [i]);只是跳过第一个主键列。)

我也将auto commit设置为false,因此我可以通过调用connection.commit()来实现一个简单的Save按钮。

我的语句对象设置了以下标志:

statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

正如我所说,代码在MySQL上运行良好。

有谁知道为什么插入新行时遇到问题?

0 个答案:

没有答案