Android - 具有多个表的关系数据库SQLite

时间:2012-05-29 13:21:01

标签: android database sqlite relational-database

我正在尝试使用21个表构建数据库,每个表都绑定约束。我已经在PHPmyAdmin中实现了数据库,然后下载了结构脚本以在我的Android SQLite数据库中导入。

但我想知道在Android中使用许多表构建关系数据库的好方法,以及如何创建它们。

目前我有一个实现SQLiteOpenHelper的类:

public class SqlSig extends SQLiteOpenHelper {

@Override
public void onCreate(SQLiteDatabase db) {
    for(int i = 0; i != ConfigBDD.requetes.length; i++){
        db.execSQL(ConfigBDD.requetes[i]);
    }
}
}

ConfigBDD.requetes [i]获取包含表创建请求和约束请求的字符串数组。此代码根本不起作用,logCat使用PRIMARY KEY指令显示错误:

 05-29 15:13:51.992: E/Database(8187): Failure 1 (near "KEY": syntax error) on 0x15c4b8
 when preparing 'CREATE TABLE IF NOT EXISTS `arret` ( `id` int(11) NOT NULL , `id_externe`
 varchar(10) DEFAULT NULL, `id_pid` int(11) NOT NULL, `nom` varchar(50) NOT NULL,
 `description` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `id_pid` (`id_pid`) )
 DEFAULT CHARSET=utf8 =1 ;'.

我很确定还有其他方法可以创建这个数据库但是没有找到任何关于多表Android SQLite数据库创建的解释......

1 个答案:

答案 0 :(得分:5)

您:

CREATE TABLE IF NOT EXISTS `arret` ( 
  `id` int(11) NOT NULL , 
  `id_externe` varchar(10) DEFAULT NULL, 
  `id_pid` int(11) NOT NULL, 
  `nom` varchar(50) NOT NULL,
  `description` varchar(255) DEFAULT NULL, 
   PRIMARY KEY (`id`), 
   KEY `id_pid` (`id_pid`))
DEFAULT CHARSET=utf8 =1 ;
如果你希望它在SQLite中工作,

应该看起来像这样。

CREATE TABLE IF NOT EXISTS arret ( 
  id INTEGER PRIMARY KEY NOT NULL , 
  id_externe TEXT DEFAULT NULL,
  id_pid INTEGER NOT NULL,
  nom TEXT NOT NULL,
  description TEXT
);

后跟CREATE INDEX的{​​{1}},这是id_pid在MySQL中的含义。