После программного удаления папки, содержащей базу данных, когда в следующий раз вызывается запрос вставки, он возвращает -1. Я думаю, что решение снова создает базу данных, вызывая конструктор базы данных. Но я не знаю, как это сделать внутри фрагмента.
Базовый класс данных:
public class SQliteHelperClass extends SQLiteOpenHelper {
public static final String Dabase_name= "UserRecord.db";
public static final String Table_name= "RTable";
public static final String col_0= "Id";
public static final String col_1= "KM";
public static final String col_2= "MDATE";
public static final String col_3= "MTIME";
public static final String col_4= "MDIFFER";
public SQliteHelperClass(Context context) {
super(context, Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
+ File.separator+"MyCarData"
+ File.separator + Dabase_name, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE "+ Table_name +"(Id INTEGER PRIMARY KEY AUTOINCREMENT, KM INTEGER, MDATE TEXT, MTIME TEXT , MDIFFER INTEGER) ");
}
public boolean insertData(KmDataModel kmDataModel) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(col_0,kmDataModel.getId());
contentValues.put(col_1,kmDataModel.getKm());
contentValues.put(col_2,kmDataModel.getDate());
contentValues.put(col_3,kmDataModel.getTime());
contentValues.put(col_4,kmDataModel.getDffKm());
long result =db.insert(Table_name,null,contentValues);
if(result == -1){
return false;
}else{
return true;
}
}
}
Метод удаления, который вызывает удаление Содержит определенную папку:
public void DeleteDataFolder(){
File dir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
+ File.separator+"MyCarData"
+ File.separator);
if (dir.isDirectory())
{
String[] children = dir.list();
for (int i = 0; i < children.length; i++)
{
Log.e("File_List",children[i]);
new File(dir, children[i]).delete();
}
}
}
Обратите внимание, что если я закрою приложение и запустлю его снова,база данных работает нормально, поэтому я вызывал метод, который заставляет приложение закрываться, но я не хочу закрывать приложение.