Странное исключение для getGeneratedKeys () с JDBC для MySQL 5.1 - PullRequest
2 голосов
/ 13 мая 2009

Я использую JDBC для вставки строки в базу данных MYSQL. Я строю параметризованную команду, выполняю ее и пытаюсь получить автоматически сгенерированные ключи следующим образом:

String sql = "INSERT IGNORE INTO `users` (`email`, `pass-hash`) VALUES (?, ?)";
Connection conn = SQLAccess.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, login);
ps.setString(2, passHash);

int count = ps.executeUpdate();

if (count == 1) {
    ResultSet rs = ps.getGeneratedKeys();
    rs.next();
         //some more stuff...
}

По какой-то причине я получаю следующее SQLException в строке, содержащей ResultSet rs = ps.getGeneratedKeys();:

! Statement.Generated Keys Нет Запрашиваемый!

Есть мысли? Когда я запускаю тот же запрос, который генерируется при запуске приложения через отладчик, в браузере MySQL он выполняется без инцидентов.

Спасибо, Брайен

Ответы [ 2 ]

5 голосов
/ 13 мая 2009

Я думаю, что вы хотите позвонить prepareStatement(sql, RETURN_GENERATED_KEYS)

0 голосов
/ 19 апреля 2010

Метод getGeneratedKeys () используется в API JDBC 3.0, и его нельзя использовать на всех платформах.

И у PreparedStatement нет реализации getGenerateKeys (), и это только в Statement и является абстрактным методом.

Вот тема о проблеме этого метода: http://forums.sun.com/thread.jspa?threadID=260818

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...