2015-03-07 2 views
0

Привет, Я создал приложение для управления запасами.обновление не работает в JDBC

Но когда я выполняю функцию обновления, поток был в порядке, и во время выполнения ошибок не было обнаружено ошибок. Но таблица остается неизменной.

conn = getConnection(); 
      preStmt = conn 
        .prepareStatement("UPDATE category SET name=? where id=?;"); 
      preStmt.setString(1, category.getCategoryName()); 
      preStmt.setInt(2, category.getCategoryId()); 
      preStmt.executeUpdate(); 
      closeDb(); 
+0

Попробуйте 'System.out.println (preStmt.executeUpdate ()) 'и дайте нам знать, какой результат. Если вывод равен 0, то обновление не происходит – Razib

+0

У вас есть запись в категории, где name является 'category.getCategoryName()' и id является 'category.getCategoryId()'? – SMA

+0

@ Выход Razib равен 1. – jijesh

ответ

1

Вы должны либо завершить сделку:

conn.commit(); 

или установить atutocommit перед созданием подготовленных заявлений:

conn.setAutoCommit(true); 
+0

не работает 'conn = getConnection(); \t \t conn.setAutoCommit (false); \t \t preStmt = сопп \t \t \t \t .prepareStatement ("UPDATE категория имя SET = где ID = ?;?"); \t \t preStmt.setString (1, category.getCategoryName()); \t \t preStmt.setInt (2, category.getCategoryId()); \t \t preStmt.executeUpdate(); \t \t conn.commit(); ' – jijesh

+0

Не могли бы вы показать нам значения conn.isClosed() и con.isValid (0) сразу после вызова conn = getConnection(); ? Не могли бы вы сделать выбор в этой таблице со значениями имени и id? не могли бы вы показать нам также описание таблицы? не могли бы вы показать нам возвращаемые значения executeUpdate (...)? –

+0

'conn.isClosed - false' ' con.isValid - true' 'CREATE TABLE' category' ( 'id' INT (11) NOT NULL AUTO_INCREMENT, ' name' VARCHAR (45) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ ('id') ) ДВИГАТЕЛЬ = InnoDB DEFAULT CHARSET = latin1; /*! 40101 SET character_set_client = @saved_cs_client ' – jijesh

Смежные вопросы