Android数据库为空

时间:2015-05-22 17:40:57

标签: android sqlite

我的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;
}

2 个答案:

答案 0 :(得分:2)

您永远不会关闭连接或提交更改。

setTransactionSuccessful()

我认为是你正在寻找的东西。 Check here for more info:

答案 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代码