繁体   English   中英

SQLite数据库问题,创建时出错

[英]Problems with SQLite database, error when creating

启动我的应用程序时出现此错误:

12-20 22:27:01.447:错误/数据库(716):在准备'CREATE TABLE权限(fk_email1 varchar(100)NOT NULL,fk_email2 varchar(100))时在0x1a4338上失败1(“:00”:语法错误) NOT NULL,已验证的tinyint(4)默认值0,hour1时间默认值08:00:00,hour2时间默认值20:00:00,date1日期默认值NULL,date2日期默认值NULL,周末tinyint(4)默认值0,fk_type varchar( 45)默认为NULL,PRIMARY KEY(fk_email1,fk_email2))。

这是我创建数据库的代码:

private static final String PERMISSION_TABLE_CREATE = 
"CREATE TABLE permission (" 
"fk_email1 varchar(100) NOT NULL, fk_email2 varchar(100) NOT NULL, "
"validated tinyint(4) default 0, hour1 time default 08:00:00, "
"hour2 time default 20:00:00, date1 date default NULL, "
"date2 date default NULL, weekend tinyint(4) default 0, "
"fk_type varchar(45) default NULL, PRIMARY KEY  (fk_email1,fk_email2))";

private static final String USER_TABLE_CREATE = "CREATE TABLE user ( "
"email varchar(100) NOT NULL, password varchar(45) default NULL, "
"fullName varchar(80) default NULL, "
"mobilePhone varchar(14) default NULL, "
"mobileOperatingSystem varchar(20) default NULL, PRIMARY KEY  (email))";

我在做什么不好?

查看SQLLite文档。 我认为它与“ TIME”数据类型没有类型相似性。 如果是这样,则默认值可能必须用引号引起来。

SQLite对于数据类型非常有趣(本质上,所有数据都是无类型的),并且可以通过摆脱VARCHAR长度(甚至是VARCHAR而支持TEXT)来大大缩短DDL。

显然您的时间行定义是错误的

请检查SQLite文档

您可以尝试使用“ YYYY-MM-DD HH:MM:SS.SSS”格式,但最好将值存储为INTEGER(Unix时间)

http://www.sqlite.org/faq.html#q2

(2)SQLite支持哪些数据类型?

SQLite使用动态类型。 内容可以存储为INTEGER,REAL,TEXT,BLOB或NULL。

例如,使用INTEGER,它可以存储Java的long。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM