Android SQLite: tham số nullColumnHack trong phương thức chèn / thay thế


96

SDK Android có một số phương pháp thuận tiện để thao tác dữ liệu với SQLite. Tuy nhiên, cả hai phương thức chènthay thế đều sử dụng một nullColumnHacksố tham số mà tôi không hiểu.

Tài liệu giải thích điều đó với những điều sau đây, nhưng điều gì sẽ xảy ra nếu một bảng có nhiều cột cho phép NULL? Tôi thực sự không hiểu nó: /

SQL không cho phép chèn một hàng hoàn toàn trống, vì vậy nếu giá trị ban đầu trống, cột này [ / hàng để thay thế ] sẽ được gán một NULLgiá trị rõ ràng .

Câu trả lời:


195

Giả sử bạn có một bảng được đặt tên footrong đó tất cả các cột đều cho phép NULLgiá trị hoặc có giá trị mặc định.

Trong một số triển khai SQL, đây sẽ là SQL hợp lệ:

INSERT INTO foo;

Điều đó không hợp lệ trong SQLite. Bạn phải có ít nhất một cột được chỉ định:

INSERT INTO foo (somecol) VALUES (NULL);

Do đó, trong trường hợp bạn chuyển một ô trống ContentValuesđến insert(), Android và SQLite cần một số cột an toàn để gán NULLcho. Nếu bạn có một số cột như vậy để lựa chọn, hãy chọn một cột thông qua cơ chế lựa chọn mà bạn chọn: tung xúc xắc, Magic 8-Ball (TM), lật đồng xu, lật bàn đồng, v.v.

Cá nhân tôi vừa phạm luật khi chuyển một ô trống ContentValuesđến insert(), nhưng họ không hỏi tôi ... :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.