2013-10-27 10 views
0

Я пытаюсь удалить все таблицы из базы данных SQLite. Проблема в том, что я не могу сделать это с помощью команды 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 я несколько раз пытался разными способами выбирать таблицы в моей базе данных. Он не говорит о такой таблице, но данные есть в моем приложении при запуске. Кто-нибудь знает, как я могу избавиться от этих таблиц?

ТИА

+0

Если вы уверены, что не устанавливаете базу данных Android явно, она будет удалена с помощью приложения, поэтому вы можете просто переустановить приложение. Однако, если вы хотите сделать это во время выполнения, вы должны убедиться, что он не используется, затем откройте его и запустите команду 'query' – NitroNbg

+0

возможный дубликат команды [Drop all tables] (http://stackoverflow.com/ вопросы/525512/drop-all-tables-command) –

+0

Ваш вопрос уже ответил на: http://stackoverflow.com/a/548297/845443 –

ответ

1

Если вы действительно хотите удалить все содержимое базы данных, включая его структуру (таблицы), чем самый простой способ, чтобы удалить базу данных и создать его заново.

Снимите с context.deleteDatabase(name) и заново создайте его, открыв его с помощью вспомогательного помощника Db.

База данных deleteDatabase очень полезна, например. при тестировании кода базы данных создания.

Удаление и восстановление базы данных гарантирует отсутствие внутренней структуры или чего-либо еще. Это новый новый старт.

+0

Спасибо, но я думаю, что задал неправильный вопрос. context.deleteDatabase (module) дает мне синтаксическую ошибку около контекста. В файловом проводнике в Eclipse также нет файла базы данных. Я думаю, возможно, что, хотя базы данных нет, информация, назначенная для редактирования и текстовых просмотров в эмуляторе hte, все равно может сохранить данные, хотя она больше не существует. Тем не менее, я не подхожу к решению проблемы :(Я отредактирую questio # n, чтобы отразить это. –

+0

Просто переименовал базу данных и начал работу снова, но так как вы ответили на вопрос, то заслуживает принятия. –

Смежные вопросы