我的sqlite数据库出了问题。 每当我在我的数据库中插入一些东西时,它就被插入,我可以告诉,因为我可以在调试模式下找到它的所有条目。但是当我用db.endTransaction()关闭db时数据似乎丢失了,因为无论何时我重新打开它以从数据库中读取它都无法找到任何条目...即使这样应用程序也会启动而没有例外。
任何人都可以帮助我吗?
感谢, thoorbenVerdorben
public boolean storeValues(Context context, List<Course> values){
db = DBOpenHelper.getInstance(context).getWritableDatabase();
long id = 0;
db.beginTransaction();
for(values value: myvalues){
ContentValues cv = new ContentValues();
cv.put(DatabaseContract.HomeTable.name,value.name);
cv.put(DatabaseContract.HomeTable.link,value.name);
cv.put(DatabaseContract.HomeTable.id,value.name);
id = db.insert(DatabaseContract.HomeTable.TABLE_NAME,null,cv);
}
db.endTransaction();
if(id<0 ){
return false;
}
else return true;
}
public Set<values> getValues(Context context){
db = DBOpenHelper.getInstance(context).getReadableDatabase();
db.beginTransaction();
String[] columns = {DatabaseContract.HomeTable.name,DatabaseContract.HomeTable.link,DatabaseContract.HomeTable.id};
Cursor cursor = db.query(DatabaseContract.HomeTable.TABLE_NAME, columns,null,null,null,null,null);
Set<Course> mySet = new LinkedHashSet<Course>();
while(cursor.moveToNext()) {
Values value = new Values();
value.setName(cursor.getString(0));
value.setName(cursor.getString(1));
value.setName(cursor.getString(2));
mySet.add(value);
}
db.endTransaction();
return mySet;
}
答案 0 :(得分:2)
答案 1 :(得分:1)
我会将你的while()循环更改为:
if(cursor.moveToFirst()) { // Ensure the cursor starts from the beginning
do {
Values value = new Values();
value.setName(cursor.getString(0)); // Hopefully you realize you're
value.setName(cursor.getString(1)); // setting all these to the
value.setName(cursor.getString(2)); // same property
mySet.add(value);
} while(cursor.moveToNext());
}
if(cursor != null) { cursor.close(); }
如果这不起作用,您可能需要提供DbHelper代码