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

时间:2010-12-20 22:34:23

标签: android sqlite

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

12-20 22:27:01.447:ERROR / Database(716):在准备'CREATE TABLE权限(fk_email1 varchar(100)NOT NULL,fk_email2 varchar)时,0x1a4338上的失败1(接近“:00:语法错误) (100)NOT NULL,验证tinyint(4)默认0,小时1时间默认08:00:00,小时2时间默认20:00:00,date1日期default NULL,date2 date default NULL,weekend 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))";

我做得不好?

3 个答案:

答案 0 :(得分:2)

检查SQLLite文档。我不认为它对“TIME”数据类型具有类型亲和力。如果是,则默认值可能必须在引号中。

SQLite对数据类型非常有趣(基本上,所有数据都是无类型的),你可以通过去掉VARCHAR长度(甚至VARCHAR来支持TEXT)来大大缩短你的DDL。

答案 1 :(得分:1)

显然你的时间排的定义是错误的

请检查SQLite docs

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

答案 2 :(得分:1)

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

  

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

     

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

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