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

Zar*_*Dev 0 database sqlite android 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]);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

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 ;'.
Run Code Online (Sandbox Code Playgroud)

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

Jen*_*ens 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 ;
Run Code Online (Sandbox Code Playgroud)

如果你希望它在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
);
Run Code Online (Sandbox Code Playgroud)

接下来是一个CREATE INDEX针对你的id_pid,这就是KEYMySQL的含义.