Java의 SQLite를 사용하여 마지막 삽입 ID를 얻는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/216790

  •  03-07-2019
  •  | 
  •  

문제

Java의 SQLite를 사용하여 마지막 삽입 ID를 얻는 가장 좋은 방법은 무엇입니까? Google은 저에게 다른 답변을 제공하고 있습니다. 다른 사람들은 Call Statement.getGeneratedKeys ()라고 말합니다. 가장 좋은 경로는 무엇입니까? (나는 단지 ID를 반환하고 다른 인서트 또는 그 밖의 어떤 것에 사용하지 않고 싶습니다.)

도움이 되었습니까?

해결책

사용 getGeneratedKeys() JDBC 드라이버가 지원하는 경우. 삽입 후 키를 직접 얻으려고 노력하고 싶지 않습니다. 운전자가 지원하지 않는 경우 getGeneratedKeys() 그런 다음 삽입 전에 키에서 다음 값을 얻을 수 있습니다.

다른 팁

어느 접근법도 동일한 정확한 SQL 문을 실행하지만 java.sql.Statement.getGeneratedKeys() 다른 기본 데이터베이스에 대해 더 휴대가 가능합니다.

어느 쪽이든 sqlite3_last_insert_rowid() C API 함수 또는 last_insert_rowid() SQL 기능은 마지막 인서트 중에 생성 된 Rowid를 검색하는 올바른 방법입니다.

sqlite는 SQL 스칼라 함수 구문 :

SELECT function-name();

따라서 C API에 직접 액세스하지 않으면 스칼라 함수를 호출 할 수 있습니다. last_insert_rowid() a SELECT 성명.

당신이 보면 소스 코드sqlitejdbc 구현 (이것이 당신이 사용하는 것입니까?) 이것이 JDBC 래퍼의 저자가 한 일임을 알게 될 것입니다.

ResultSet getGeneratedKeys() throws SQLException {
    if (getGeneratedKeys == null) getGeneratedKeys = conn.prepareStatement(
        "select last_insert_rowid();");
    return getGeneratedKeys.executeQuery();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top