我的程序在连接到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上运行良好。
有谁知道为什么插入新行时遇到问题?