0

我正在尝试使用 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 数据库创建的任何解释......

4

1 回答 1

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 INDEXfor your id_pid,这就是KEYMySQL 中的含义。

于 2012-05-29T13:32:24.657 回答