Android SQLite : 삽입 / 바꾸기 메서드의 nullColumnHack 매개 변수 사용법을 사용합니다. 문서에서는 다음과

Android SDK에는 SQLite로 데이터를 조작하는 몇 가지 편리한 방법이 있습니다. 그러나 삽입바꾸기 방법은 nullColumnHack내가 이해하지 못하는 사용법을 사용합니다.

문서에서는 다음과 같이 설명하지만 테이블에 허용되는 여러 열이있는 경우 NULL어떻게됩니까? 나는 그것을 정말로 이해하지 못한다 : /

SQL은 완전히 빈 행을 삽입하는 것을 허용하지 않으므로 initialValues가 비어 있으면이 열 [ / row for replace ]에 명시 적으로 NULL값 이 할당됩니다 .



답변

foo모든 열이 NULL값을 허용 하거나 기본값 이있는 테이블이 있다고 가정 해 보겠습니다 .

일부 SQL 구현에서는 유효한 SQL이됩니다.

INSERT INTO foo;

SQLite에서는 유효하지 않습니다. 최소한 하나의 열을 지정해야합니다.

INSERT INTO foo (somecol) VALUES (NULL);

따라서 빈 ContentValues을에 전달하는 경우 insert()Android 및 SQLite에는 할당 NULL하기에 안전한 일부 열이 필요 합니다. 선택할 수있는 열이 여러 개있는 경우 주사위 굴림, Magic 8-Ball (TM), 동전 뒤집기, 큐비클 메이트 뒤집기 등 원하는 선택 메커니즘을 통해 하나를 선택합니다.

개인적으로 빈 ContentValues을 에게 전달하는 것을 불법으로 insert()만들었지 만 그들은 나에게 묻지 않았습니다 … 🙂