将布尔值插入 sqlite table
Insert boolean value into sqlite table
我创建了一个tableMYTABLE
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")
读取该记录时,我得到了错误。
最后,我尝试了这个
INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", 1);
rs.getBoolean("flag")
returns true
。所以这里的教训是,Sqlite中的布尔值是用0/1插入的?
SQLite 没有单独的布尔存储 class.Boolean 值存储为整数 0 和 1。
source
是的,在很多数据库中,BOOL 类型是 BIT 的同义词,包括 SQLite 和 SQL Server。其他数据库,如 Oracle,甚至没有布尔类型,并且 NUMBER(1) 字段用于按照约定存储布尔值。
我创建了一个tableMYTABLE
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")
读取该记录时,我得到了错误。
最后,我尝试了这个
INSERT INTO "MYTABLE" VALUES ("Super","Mario","94", 1);
rs.getBoolean("flag")
returns true
。所以这里的教训是,Sqlite中的布尔值是用0/1插入的?
SQLite 没有单独的布尔存储 class.Boolean 值存储为整数 0 和 1。 source
是的,在很多数据库中,BOOL 类型是 BIT 的同义词,包括 SQLite 和 SQL Server。其他数据库,如 Oracle,甚至没有布尔类型,并且 NUMBER(1) 字段用于按照约定存储布尔值。