2010-04-18 6 views
91

Android SDK에는 SQLite로 데이터를 조작하기위한 몇 가지 편리한 메소드가 있습니다. 그러나 insertreplace 방법은 모두 내가 이해하지 못하는 일부 nullColumnHack 매개 변수를 사용합니다.Android SQLite : 삽입/바꾸기 메소드의 nullColumnHack 매개 변수

설명서에 다음 내용이 설명되어 있지만 표에 NULL을 허용하는 여러 열이있는 경우 어떻게됩니까?/

SQL은 완전히 빈 행을 삽입 할 수 없습니다, 그래서 initialValues이 비어있는 경우,이 열 [ 교체에 대한 /행]은 명시 적으로 NULL 값이 할당 될 것이다 : 나는 정말 그것을 얻지 않는다.

답변

188

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

어떤 SQL 구현에서, 이것은 유효한 SQL 다음과 같습니다

SQLite는 유효 아니다
INSERT INTO foo; 

. 당신은 지정된 하나 이상의 열이 있어야 : 당신이 insert()에 빈 ContentValues을 통과 곳 경우,

INSERT INTO foo (somecol) VALUES (NULL); 

따라서를, 안드로이드와 SQLite는이 NULL를 할당하는 것이 안전 약간의 열이 필요합니다. 선택할 수있는 칼럼이 여러 개인 경우 주사위 롤, Magic 8-Ball (TM), 코인 플립, 칸막이 메이트 플립 등 선택 메커니즘을 통해 선택하십시오.

개인적으로, ContentValuesinsert()에 전달하는 것은 불법입니다.하지만 그들은 내게 묻지 않았습니다 ... :-)

관련 문제