当数据库为空时如何更新数据库? Android的

时间:2015-02-25 17:54:36

标签: android database

如果你查看我底部的代码,我的数据库就会使用'使用'。如果它是1,则意味着它没有被使用,当它被使用时,它设置为将数字更新为0.但是当所有行都使用数字0时,我想更新使用再次从0到1。怎么做?我没有线索。尝试使用cd.getCount(),但没有工作,尝试其他一些东西,但再次无法设法让它工作。所以我问是否有人可以帮助我并告诉我将什么放入代码中。谢谢!

这是我得到的错误:

  

02-25 18:46:16.962:E / AndroidRuntime(9728):android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0

public void set(){
   SQLiteDatabase db;
    String vprasanje = "";
    db=openOrCreateDatabase("baza.db",MODE_PRIVATE, null);

    Cursor cd=db.rawQuery("SELECT * FROM vprasanja WHERE kategorija=" + kategorija4 + " AND used = 1 ORDER BY RANDOM() LIMIT 1", null);
    cd.moveToFirst();

        vprasanje = cd.getString(cd.getColumnIndex("text"));

        //patch
        String id2 = (cd.getString(cd.getColumnIndex("id")));
        int idd2 = Integer.parseInt(id2);
        db.execSQL("UPDATE vprasanja SET used=0 WHERE id =" + idd2 + ";");


        beseda = (TextView) findViewById(R.id.textView3);
        beseda.setText("");
        beseda.setText(vprasanje);

        db.close();
        busy = 0;
}

1 个答案:

答案 0 :(得分:4)

好的,所以代码中有一些东西需要修复。首先,您需要检查cursor.moveToFirst()是否确实发生过。如果数据库中没有记录,则无法尝试获取字符串。

然后第一件事:

if(cd.moveToFirst()){

       vprasanje = cd.getString(cd.getColumnIndex("text"));

        //patch
        String id2 = (cd.getString(cd.getColumnIndex("id")));
        int idd2 = Integer.parseInt(id2);
        db.execSQL("UPDATE vprasanja SET used=0 WHERE id =" + idd2 + ";");


        beseda = (TextView) findViewById(R.id.textView3);
        beseda.setText("");
        beseda.setText(vprasanje);


        db.close();
        busy = 0;
}

但是,只要您不将内容插入数据库,这将始终为false,因为数据库中永远不会有任何记录。您将要插入内容,以防您无法更新:

db.rawQuery("INSERT INTO .... SET ... VALUES ...");