У меня проблема с удалением таблиц в SqLite.Удаление таблицы в sqlite, включая имена столбцов
Если я потребительный
db.delete (TABLE_NAME, NULL, NULL);
Содержимое таблицы удаляется, но имена столбцов все еще остаются. Как удалить имена столбцов?
Я также пробовал db.execSQL («DROP TABLE IF EXISTS» + TABLE_NAME + «Имя таблицы»);
Но это совсем не работает.
Как я могу удалить всю таблицу программно или есть способ удалить всю базу данных без использования телефона (иначе мы получим ошибки «Разрешения на отказ») через код?
Вот часть кода, связанного с onCreate, созданием и удалением таблиц.
package com.example.appchecker;
import java.io.File;
import com.example.appchecker.FeedReaderContract.CycDetails;
import com.example.appchecker.FeedReaderContract.FeedEntry;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class FeedReaderDbHelper2 extends SQLiteOpenHelper {
// If you change the database schema, you must increment the database version.
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "final31.db";
public static boolean exists = false;
private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ", ";
private static final String SQL_CREATE_ENTRIES =
" CREATE TABLE " +FeedEntry.TABLE_NAME + " (" +
FeedEntry._ID + " INTEGER PRIMARY KEY" + COMMA_SEP +
FeedEntry.COLUMN_NAME_NUMBER + TEXT_TYPE + COMMA_SEP +
FeedEntry.COLUMN_NAME_APP_NAME + TEXT_TYPE + COMMA_SEP +
FeedEntry.COLUMN_NAME_PKG_NAME + TEXT_TYPE +
// Any other options for the CREATE command
");";
private static final String SQL_CREATE_ENTRIES2 =
" CREATE TABLE " +CycDetails.TABLE_NAME + " (" +
CycDetails._ID + " INTEGER PRIMARY KEY" + COMMA_SEP +
CycDetails.COLUMN_NAME_CYCLENAME + TEXT_TYPE + COMMA_SEP +
CycDetails.COLUMN_NAME_DATE + TEXT_TYPE + COMMA_SEP +
CycDetails.COLUMN_NAME_OSVERSION + TEXT_TYPE + COMMA_SEP +
CycDetails.COLUMN_NAME_SWVERSION + TEXT_TYPE +
// Any other options for the CREATE command
");";
private static final String SQL_DELETE_ENTRIES1 =
"DROP TABLE IF EXISTS " + DATABASE_NAME.substring(0,DATABASE_NAME.length()-3)+".Mobile_App_Details";
private static final String SQL_DELETE_ENTRIES2 =
"DROP TABLE IF EXISTS " + DATABASE_NAME.substring(0, DATABASE_NAME.length()-3)+".Cycle_Details";
public FeedReaderDbHelper2(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
db.execSQL(SQL_CREATE_ENTRIES2);
return;
} /*Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+FeedEntry.TABLE_NAME+"'", null);
System.out.println("In on create1") ;
if(cursor==null)
{
System.out.println("In on create") ;
db.execSQL(SQL_CREATE_ENTRIES);
}
else
{
System.out.println("Update phase") ;
exists=true;
}
*/
}
public static void deletetable(SQLiteDatabase db)
{
db.delete(FeedEntry.TABLE_NAME, null, null);
db.delete(CycDetails.TABLE_NAME, null, null);
db.execSQL(SQL_DELETE_ENTRIES1);
db.execSQL(SQL_DELETE_ENTRIES2);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// This database is only a cache for online data, so its upgrade policy is
// to simply to discard the data and start over
//System.out.println("Update phase") ;
db.execSQL(SQL_DELETE_ENTRIES1);
db.execSQL(SQL_DELETE_ENTRIES2);
//db.delete(FeedEntry.TABLE_NAME, null, null);
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
}
В настоящее время я инстанцировании функцию deletetable в качестве on_click даже в MainActicity. Logcat не показывает ошибок, но когда я печатаю имена найденных столбцов, он печатает некоторые имена столбцов, записи которых уже удалены. Мне не нужны эти столбцы.
И я никоим образом не использую метод обновления.
извините, что это была опечатка. Я редактировал свой вопрос. Проблема не в этом. – SoulRayder
показать коды, которые вы использовали для создания своей базы данных и logcat, когда вы получаете ошибку. – ayon