0

最初にすべてのテーブルを同時に作成しようとしますが、table_file で外部キーに関連するエラーが発生するため、コードにコメントを付けます。私のDBhelperでこのテーブルを作成し、他のテーブルを正常に作成しましたが、tabe_file作成コードabdのコメントを外すと、このテーブルを作成しようとすると、次のように表示されます:sqliteが返されました:エラーコード= 1、msg =そのようなテーブルはありません:file_table私はlogcatにそれを持っています

06-15 13:26:19.841: E/Database(24784): Error inserting file_category_column=0 file_theme_column=0 file_name_column=priv_priv_222_2012-06-15.pdf file_date_creating_column=1
06-15 13:26:19.841: E/Database(24784): android.database.sqlite.SQLiteException: no such table: file_table: , while compiling: INSERT INTO file_table(file_category_column, file_theme_column, file_name_column, file_date_creating_column) VALUES(?, ?, ?, ?);
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65)
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1149)
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1569)
06-15 13:26:19.841: E/Database(24784):  at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)

このテーブルを作成するにはどうすればよいですか?

4

3 に答える 3

0

SQLite に関するこのチュートリアルを参照してください。

http://www.vogella.com/articles/AndroidSQLite/article.html

そのようなテーブルがないと不平を言っている場合、そのテーブルは存在しません。現在のスキーマをアップグレードしている場合は、データベースのバージョンを更新して onUpgrade() が呼び出されるようにし、テーブルが再作成されるように onUpgrade() で作業を行っていることを確認してください。

于 2012-06-15T13:57:41.473 に答える
0

クラスをいくつかの機能に使用しました。試してみてください:

public PLSQLiteOpenHelper(Context context, String name, CursorFactory factory, int version, String tableNames[], String fieldNames[][], String fieldTypes[][]) {
    super(context, name, factory, version);
    TableNames = tableNames;
    FieldNames = fieldNames;
    FieldTypes = fieldTypes;
}

@Override
public void onCreate(SQLiteDatabase db) {
    if(TableNames == null){
        message = NO_CREATE_TABLES;
        return;
    }

    for(int i = 0; i < TableNames.length; i++){
        String sql = "CREATE TABLE " + TableNames[i] + "(";
        for(int j = 0; j < FieldNames[i].length; j++)
            sql += FieldNames[i][j] + " " + FieldTypes[i][j] + ",";
        sql = sql.substring(0, sql.length() - 1);
        sql += ")";
        db.execSQL(sql);
    }
}

上記は create 関数のみです。見てみるといいかもしれません。

于 2012-06-15T13:59:09.253 に答える
0

別のテーブルを既存のデータベースに追加するには (最初にアプリ内で作成したと仮定します)、onUpgrade方法を変更できます。

onUpgradeデータベースのアップグレードが必要になるたびに呼び出されます。DB が最後に開かれたときに保存されたバージョン番号に対して、指定したバージョン番号をチェックすることによって、それを判断します。を呼び出すには、VERSION_NUMBER をインクリメントする必要がありますonUpgrade

@Override 
public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.executeSQL(DATABASE_CREATETABLE2); 
} 

DATABASE_CREATETABLE2 は、テーブルを作成するための SQL ステートメントを保持する文字列になります (おそらく、他のテーブルで行ったのと同じように)。

于 2012-06-15T14:32:29.897 に答える