为sql db创建多个表(h-a-s表)

时间:2014-06-16 10:18:02

标签: android mysql sql database sqlite

我一直在尝试使用for循环创建一个多表DB。数据库用于为一个带有单词的游戏和用另一种语言翻译用于学习英语,但这就是为什么我需要26个表(一个字母表,A-Z) 这就是为什么我认为这样做的最好方法是在一个循环中。 我一直在尝试为我的DBHelper添加一个扩展SQLiteOpenHelper的循环,我不知道为什么,它不允许我这样做。它试图做类似的事情:

private static class DBHelper extends SQLiteOpenHelper{
char c = 'A';
    String[] tableT, DATABASE_TABLE;
    for (int i = 0; i<26; i++){
        DATABASE_TABLE[i] = "" + c;
        tableT[i] ="CREATE TABLE " + DATABASE_TABLE[0] + " (" +
            KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            KEY_WORDS + " TEXT NOT NULL, " + 
            KEY_TRANSLATION + " TEXT NOT NULL, " +
            KEY_TURNLEFT + " TEXT NOT NULL, " + 
            KEY_ISKNOWN + " TEXT NOT NULL, " + 
                            KEY_TOLEARN + " TEXT NOT NULL);";
                     c++;
    }

} eclips将红色标记保留在&#34; DATABASE_TABLE&#34;的结尾处。错误:

Syntax error on token ";", { expected after this token

有人知道为什么吗?有没有办法在这个类之外进行循环并以某种方式访问​​它?

1 个答案:

答案 0 :(得分:0)

如果我没有误解你,你正在尝试用不同的名字创建每个表。但是您正在创建具有相同名称的表:

     DATABASE_TABLE[i] = "" + c;

每次都会使用表名“A”。此外,您始终只设置表nr。来自Array的0:

     tableT[i] ="CREATE TABLE " + DATABASE_TABLE[0]

你的循环应如下所示:

           char c = 'A';
String[] tableT, DATABASE_TABLE;
for (int i = 0; i<26; i++){
    DATABASE_TABLE[i] = c +"_"+i;
    tableT[i] ="CREATE TABLE " + DATABASE_TABLE[i] + " (" +
        KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        KEY_WORDS + " TEXT NOT NULL, " + 
        KEY_TRANSLATION + " TEXT NOT NULL, " +
        KEY_TURNLEFT + " TEXT NOT NULL, " + 
        KEY_ISKNOWN + " TEXT NOT NULL, " + 
                        KEY_TOLEARN + " TEXT NUT NULL);";
}

这应该给出A_1,A_2等表名。

显示eclipse的错误必须在您的代码中的任何位置,您忘记设置声明{,但这不是postet。你是什​​么意思“eclips在”表格“的末尾用”分号“保留红色标记,并带有错误”? “桌子”这个词在哪里?