Я пытаюсь добавить новую запись в таблицу из базы данных Derby. Мне нужно использовать номер записи в одном из полей. Например. Мне нужно сохранить путь к изображению в поле фотографии. И имя изображения должно соответствовать его идентификатору. Например, 1.jpg. Я пытался это заявление (файл не продление используется в данном примере):Как использовать сгенерированный идентификатор в инструкции SQL?
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO Users (name, lastname, email, address, password, photo, lastvisit, status) VALUES ('" + name + "','" + lastname + "','" + email + "','" + address + "','" + DigestUtils.toMd5(password) + "', id, '" + now + "','user')");
Но я получаю сообщение об ошибке: java.sql.SQLSyntaxErrorException: Column «ID» либо не в любой таблице в списке FROM. .. Но эта колонка определенно существует. В чем причина ошибки?
Несвязанный, но: пожалуйста, научитесь правильно использовать 'PreparedStatement' ** **. Не объединяйте значения в строку SQL. Вместо этого используйте заполнители ('?'). –
Вы имеете в виду, что если вновь созданная запись 'Users' получает идентификатор пользователя 42, вам нужно, чтобы значение' photo' было ''42 .jpg''? Если это так, то вам либо потребуется инструкция обновления * после * вставка возвращает новый идентификатор вам, либо вам нужно сделать это в триггере. – Andreas
См. Http://stackoverflow.com/questions/1915166/how-to-get-the-insert-id-in-jdbc о том, как получить сгенерированный идентификатор, затем используйте это значение в следующем выражении. –