Derby 데이터베이스에서 테이블에 새 레코드를 추가하려고합니다. 해당 필드 중 하나에서 레코드 번호를 사용해야합니다. 예 : 사진 필드에 이미지의 경로를 저장해야합니다. 그리고 이미지의 이름은 ID와 일치해야합니다. 예 : 1.jpg. 나는 (파일 확장자는이 예제에서 사용되지 않음)이 문을 시도하고 있었다 :SQL 문에서 generated id를 사용하는 방법은 무엇입니까?
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을 : 열 'ID'을 하나하지 목록에서의 모든 테이블에 있습니다. .. 하지만이 열은 분명히 존재합니다. 오류의 원인은 무엇입니까?
관련 없음 : 'PreparedStatement' **를 올바르게 사용하는 법을 배우십시오 **. 값을 SQL 문자열로 연결하지 마십시오. 대신 자리 표시 자 ('?')를 사용하십시오. –
새로 만든'Users' 레코드가 42라는 사용자 ID를 얻으면,'photo'의 값을''42 .jpg '로 바꾸고 싶습니까? 그렇다면 insert가 새 ID를 반환하거나 * 트리거에서 수행해야하는 * 후에 update 문이 필요합니다. – Andreas
생성 된 ID를 얻는 방법은 http://stackoverflow.com/questions/1915166/how-to-get-the-insert-id-in-jdbc를 참조하십시오. 그런 다음 그 다음 문에서 그 값을 사용하십시오. –