将布尔值插入到 sqlite 表中

yay*_*zis 8 sqlite sql-insert

我创建了一个表 MYTABLE

CREATE TABLE "MYTABLE" (
       "surname" VARCHAR,
       "name" VARCHAR,
       "id" INTEGER PRIMARY KEY  NOT NULL ,
       "flag" BOOL);
Run Code Online (Sandbox Code Playgroud)

当我插入一条记录时:

INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", true);
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,即no such column: true. 如果我使用这个:

INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", "true");
Run Code Online (Sandbox Code Playgroud)

我没有收到任何错误,但是当我阅读该记录时,rs.getBoolean("flag")我得到了错误。

最后,我试过这个

INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", 1); 
Run Code Online (Sandbox Code Playgroud)

rs.getBoolean("flag")回报true。所以这里的教训是 Sqlite 中的布尔值插入 0/1 ?

Osa*_*tab 5

SQLite 没有单独的布尔存储类。布尔值存储为整数 0 和 1。

  • 你应该说清楚这个答案的文本是从[SQLite's page on datatypes](https://www.sqlite.org/datatype3.html)复制的,否则可能被认为是抄袭 (4认同)
  • 16个字的“抄袭”感觉有些言过其实。但源链接很有帮助。 (2认同)

Pan*_*vos 3

是的,BOOL 类型在许多数据库中与 BIT 是同义的,包括 SQLite 和 SQL Server。其他数据库(例如 Oracle)甚至没有布尔类型,并且按惯例使用 NUMBER(1) 字段来存储布尔值。