0

SQLite データベースからすべてのテーブルを削除しようとしています。問題は、SQLite コマンドを介してそれを行うことができないようで、自分のコンピューターでファイルを見つけることができないことです。データベースにデータを挿入する次のコードがあります。

package com.example.mycoursetimetable;


import java.util.ArrayList;
import java.util.HashMap;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBTools extends SQLiteOpenHelper {

public DBTools(Context applicationContext){

    super(applicationContext, "module.db", null, 1);

}

@Override
public void onCreate(SQLiteDatabase database) {

    String query = "CREATE TABLE modules ( moduleId INTEGER PRIMARY KEY,ModuleCode TEXT PRIMARY KEY, ModuleName TEXT,ModuleType TEXT, DayOfWeek TEXT, StartTime TEXT, EndTime TEXT,Location TEXT,AdditionalInfo Text)";

    database.execSQL(query);

}

@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {

    String query = "DROP TABLE IF EXISTS modules";

    database.execSQL(query);
    onCreate(database);

}

public void insertModule(HashMap<String, String> queryValues){

    SQLiteDatabase database = this.getWritableDatabase();

    ContentValues values = new ContentValues();

    values.put("ModuleCode", queryValues.get("ModuleCode"));
    values.put("ModuleName", queryValues.get("ModuleName"));
    values.put("ModuleType", queryValues.get("ModuleType"));
    values.put("DayOfWeek", queryValues.get("DayOfWeek"));
    values.put("StartTime", queryValues.get("StartTime"));
    values.put("EndTime", queryValues.get("EndTime"));
    values.put("Location", queryValues.get("Location"));
    values.put("AdditionalInfo", queryValues.get("AdditionalInfo"));

    database.insert("modules", null, values);

    database.close();

}

public int updateModule(HashMap<String, String> queryValues){

    SQLiteDatabase database = this.getWritableDatabase();

    ContentValues values = new ContentValues();


    values.put("ModuleCode", queryValues.get("ModuleCode"));
    values.put("ModuleName", queryValues.get("ModuleName"));
    values.put("ModuleType", queryValues.get("ModuleType"));
    values.put("DayOfWeek", queryValues.get("DayOfWeek"));
    values.put("StartTime", queryValues.get("StartTime"));
    values.put("EndTime", queryValues.get("EndTime"));
    values.put("Location", queryValues.get("Location"));
    values.put("AdditionalInfo", queryValues.get("AdditionalInfo"));

    return database.update("modules", values, 
            "moduleId" + " = ?", new String[]  {queryValues.get("moduleId") });

}

public void deleteModule(String id){

    SQLiteDatabase database = this.getWritableDatabase();

    String deleteQuery = "DELETE FROM modules WHERE moduleId='" + id + "'";

    database.execSQL(deleteQuery);

}

public ArrayList<HashMap<String, String>> getAllModules(){

    ArrayList<HashMap<String, String>> moduleArrayList = new  ArrayList<HashMap<String, String>>();

    String selectQuery = "SELECT * FROM modules ORDER BY ModuleCode";

    SQLiteDatabase database = this.getWritableDatabase();

    Cursor cursor = database.rawQuery(selectQuery, null);

    if(cursor.moveToFirst()){

        do{

            HashMap<String, String> moduleMap = new HashMap<String,  String>();

            moduleMap.put("moduleId", cursor.getString(0));
            moduleMap.put("ModuleCode", cursor.getString(1));
            moduleMap.put("ModuleName", cursor.getString(2));
            moduleMap.put("ModuleType", cursor.getString(3));
            moduleMap.put("DayOfWeek", cursor.getString(4));
            moduleMap.put("StartTime", cursor.getString(5));
            moduleMap.put("EndTime", cursor.getString(6));
            moduleMap.put("Location", cursor.getString(7));
    //      moduleMap.put("AdditionalInfo", cursor.getString(8));


            moduleArrayList.add(moduleMap);

        } while(cursor.moveToNext());

    }

    return moduleArrayList;

}

public HashMap<String, String> getModuleInfo(String id){

    HashMap<String, String> moduleMap = new HashMap<String, String>();

    SQLiteDatabase database = this.getReadableDatabase();

    String selectQuery = "SELECT * FROM modules WHERE moduleId='" + id + "'";

    Cursor cursor = database.rawQuery(selectQuery, null);

    if(cursor.moveToFirst()){

        do{

            moduleMap.put("moduleId", cursor.getString(0));
            moduleMap.put("ModuleCode", cursor.getString(1));
            moduleMap.put("ModuleName", cursor.getString(2));
            moduleMap.put("ModuleType", cursor.getString(3));
            moduleMap.put("DayOfWeek", cursor.getString(4));
            moduleMap.put("StartTime", cursor.getString(5));
            moduleMap.put("EndTime", cursor.getString(6));
            moduleMap.put("Location", cursor.getString(7));
        //  moduleMap.put("AdditionalInfo", cursor.getString(8));


        } while(cursor.moveToNext());

    }

    return moduleMap;

}

}

SQLite シェルから、データベース内のテーブルを選択するためにさまざまな方法で何度も試しました。そのようなテーブルはないと言い続けますが、データは起動時にアプリケーションにあります。これらのテーブルを取り除く方法を知っている人はいますか??

ティア

4

1 に答える 1

1

構造 (テーブル) を含むデータベースの内容全体を本当に削除したい場合、最も簡単な方法は、データベースを削除して再作成することです。

ドロップしcontext.deleteDatabase(name)て、Db open ヘルパーで開くだけで再作成します。

deleteDatabase は、データベースの作成コードをテストする場合などに非常に便利です。

データベースを削除して再作成すると、内部構造や何も残らないことが保証されます。清々しい新たなスタートです。

于 2013-10-27T20:42:28.237 に答える