0
由於某些原因,當我重新啓動我的Android應用程序時,我以前創建的數據庫已經消失。下面顯示了我的助手類。我在一個單獨的片段創建helper類的實例,只能從片段調用了以下功能:重新啓動應用程序後刪除SQLite數據庫
helper = new LocationBaseHelper(getActivity());
helper.insertEntry(blah blah);
如果它的事項,我創建的「onCreateView()」片段類數據庫。我每次添加時都會測試數據庫的大小,所以我知道它確實會添加到數據庫中。當我重新啓動並檢查大小時,它再次爲0。這是我的助手類。
//編輯
如果有人可以解釋如何DB的SQLite的Android上的表現,這也將幫助。如果我多次調用助手構造函數,是否創建了多個數據庫?他們覆蓋以前的?如果我從不同的片段/活動/服務中調用它,該怎麼辦?謝謝。
public class LocationBaseHelper extends SQLiteOpenHelper {
private static final int VERSION = 1;
private static final String DATABASE_NAME = "locationBase.db";
private int mNumberOfElements = 0;
public LocationBaseHelper(Context context) {
super(context, DATABASE_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + LocationTable.NAME + " (" +
LocationTable.Cols.DATE_TIME + " text, " +
LocationTable.Cols.LATITUDE + " text, " +
LocationTable.Cols.LONGITUDE + " text)"
);
}
// do nothing
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
public void insertEntry(String date_time, String latitude, String longitude){
mNumberOfElements++;
SQLiteDatabase db = this.getWritableDatabase();
ContentValues content = new ContentValues();
content.put(LocationTable.Cols.DATE_TIME,date_time);
content.put(LocationTable.Cols.LATITUDE,latitude);
content.put(LocationTable.Cols.LONGITUDE,longitude);
db.insert(LocationTable.NAME,null,content);
}
public ArrayList<String> getEntireDatabase(){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + LocationTable.NAME,null);
cursor.moveToFirst();
ArrayList<String> values = new ArrayList<>();
do{
String value = (String) cursor.getString(cursor.getColumnIndex(LocationTable.Cols.DATE_TIME)) + " " +
(String) cursor.getString(cursor.getColumnIndex(LocationTable.Cols.LATITUDE)) + " " +
(String) cursor.getString(cursor.getColumnIndex(LocationTable.Cols.LONGITUDE));
values.add(0,value);
}while(cursor.moveToNext());
return values;
}
public int size(){return mNumberOfElements;}
}
如果通過檢查您的意思是「mNumberOfElements」的大小 - 當然您的字段值從默認值開始。要計算數據庫表中的行數,請使用「COUNT(*)」查詢。 – laalto
你說得對,我認爲它沒有被刪除。我會做'Cursor cursor = db.rawQuery(「SELECT COUNT(*)FROM」+ LocationTable.NAME,null);'對嗎? @laalto – Developer
是的,這將有效地計算表中的行數。 – laalto