将布尔值插入sqlite表格

9
我创建了一个表MYTABLE
CREATE TABLE "MYTABLE" (
       "surname" VARCHAR,
       "name" VARCHAR,
       "id" INTEGER PRIMARY KEY  NOT NULL ,
       "flag" BOOL);

当我使用以下方法插入一条记录:

INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", true);

我遇到了一个错误信息:no such column: true。如果我使用以下代码:

INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", "true");

我没有收到任何错误,但是当我用 rs.getBoolean("flag") 读取该记录时,得到的结果是 false。

最后,我尝试了这个方法。

INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", 1); 

rs.getBoolean("flag") 返回值为 true。因此,这里的经验教训是Sqlite中的布尔值使用0/1插入?


2
是的,在SQLite和其他数据库(例如SQL Server)中都是如此。BOOL本质上是BIT,而不是真正的布尔值。在Oracle中甚至缺少这个名称,而是使用NUMBER(1) - Panagiotis Kanavos
谢谢你,@PanagiotisKanavos!如果你想要把它作为答案发布以获得积分,请这样做。 - yaylitzis
2个回答

5

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


4
请明确指出此答案的文字是从SQLite数据类型页面复制过来的,否则可能被视为剽窃。 - Panagiotis Kanavos
2
“抄袭”这个词用在16个单词上似乎有点过了。但是源链接还是很有帮助的。 - mxmlnkn

3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接