【发布时间】:2012-07-21 21:35:58
【问题描述】:
我正在使用 CachedRowSetImpl,我可以从数据库中获取数据,但我无法插入。
这是代码:
public class NewClass {
static final String DATABASE_URL = "jdbc:derby://localhost:1527/TaskDB;create=true";
static final String USERNAME = "user";
static final String PASSWORD = "user";
public static void main (String [] agr) throws SQLException
{
CachedRowSetImpl rs = new CachedRowSetImpl();
rs.setUrl(DATABASE_URL);
rs.setUsername(USERNAME);
rs.setPassword(PASSWORD);
rs.setCommand("SELECT * FROM TASKTABLE");
rs.execute();
rs.moveToInsertRow();
rs.updateString("Column_Name","DataString");
rs.insertRow();
rs.moveToCurrentRow();
rs.updateRow();
}
}
它抛出异常:
线程“main”java.sql.SQLException 中的异常:插入行失败 在 com.sun.rowset.CachedRowSetImpl.insertRow(CachedRowSetImpl.java:5462) 在 NewClass.main(NewClass.java:32)
我试过 JdbcRowSetImpl 而不是 CachedRowSetImpl ,它工作正常
更新:我使用此代码来捕获有关异常的更多详细信息:
catch(SQLException e) {
do {
System.out.println("SQLState:" + e.getSQLState());
System.out.println("Error Code:" + e.getErrorCode());
System.out.println("Message:" + e.getMessage());
Throwable t = e.getCause();
while(t != null) {
System.out.println("Cause:" + t);
t = t.getCause();
}
e = e.getNextException();
} while (e != null);
}
输出是:
SQLState:null
错误代码:0
消息:插入行失败
【问题讨论】:
-
您需要检查整个异常。请参阅以下说明以了解如何执行此操作:wiki.apache.org/db-derby/UnwindExceptionChain。完成此操作后,请使用完整的详细信息更新您的问题。
-
谢谢@BryanPendleton :),我更新了我的问题,但看起来没有更多详细信息
-
尝试在 catch() 块内执行 e.printStackTrace()
标签: java derby cachedrowset