【问题标题】:Problems with SQLite database, error when creatingSQLite 数据库的问题,创建时出错
【发布时间】:2010-12-20 22:34:22
【问题描述】:

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

12-20 22:27:01.447: ERROR/Database(716): 0x1a4338 上的失败 1(“:00”附近:语法错误)在准备“CREATE TABLE 权限(fk_email1 varchar(100) NOT NULL, fk_email2 varchar (100) 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))";

我做错了什么?

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    查看 SQLLite 文档。我不相信它对“TIME”数据类型有类型亲和力。如果是这样,默认值可能必须用引号引起来。

    SQLite 在数据类型方面非常有趣(本质上,所有数据都是无类型的),您可以通过摆脱 VARCHAR 长度(甚至是 VARCHAR 来支持 TEXT)来显着缩短 DDL。

    【讨论】:

      【解决方案2】:

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

      请查看SQLite docs

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-05-14
          • 1970-01-01
          • 1970-01-01
          • 2012-08-21
          • 2010-10-28
          • 2015-04-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多