Я использую CachedRowSetImpl, я могу получить данные из базы данных, НО я не могу вставить.Ошибка при вставке строки с использованием CachedRowSet
это код:
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();
}
}
это бросить исключение:
Исключение в нити "основной" java.sql.SQLException: Ошибка при вставке строки в com.sun.rowset .CachedRowSetImpl.insertRow (CachedRowSetImpl.java:5462) в NewClass.main (NewClass.java:32)
Я попытался JdbcRo wSetImpl Вместо CachedRowSetImpl, и это работает прекрасный
UPDATE: Я использовал этот код, чтобы поймать более подробную информацию об исключениях:
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: нулевой
Код ошибки: 0
Сообщение: Не удалось установить строку
Вам нужно изучить все исключение. Инструкции см. В следующих инструкциях: http://wiki.apache.org/db-derby/UnwindExceptionChain. После того, как вы это сделали, обновите свой вопрос. –
Спасибо @BryanPendleton :), я обновил свой вопрос, но он выглядит больше нет. –
Попробуйте сделать e.printStackTrace() внутри этого catch() block –