光标中没有数据

时间:2013-05-02 14:55:54

标签: java android database sqlite insert

我有一个在SQLITE数据库中读写的应用程序。

public void insertkind(int id, String name, String geburtsdatum, String geschlecht){
        long rowId = 1;
        try{
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();

        cv.put(NAME, name);
        cv.put(GEBURTSDATUM, geburtsdatum);
        cv.put(GESCHLECHT, geschlecht);
        try{
            rowId = db.insert(TABLE_NAME_KIND, null, cv);
        }
        catch(Exception e){
            System.out.println("DES DERF MA NEEEEEEEEEEED SENG!!!!");
        }

        db.close();
    }
    catch (SQLiteException e){
        Log.e(TAG, "insert()", e);
    }
    finally{
        Log.d(TAG, "rowId");
    }
}

使用以下代码,我想从数据库中选择数据:

public Cursor select(){
        SQLiteDatabase db = getReadableDatabase();
        Cursor cursor = db.query(TABLE_NAME_KIND, new String[] {"_id", "name", "geburtsdatum", "geschlecht"}, 
                "" + "", null, null, null, null);
        System.out.println(cursor.getCount());
        return cursor;
    }

我还在不同的应用程序中使用了类似的代码。我的问题是cursor.getCount()为0,但插入数据时没有例外。 namegeburtsdatumgeschlecht都有一些价值。

我无法使用adb检查数据库,因为它无法在我的计算机上运行。 有什么问题?

2 个答案:

答案 0 :(得分:1)

如果您的cursor.getCount()得到0,您的查询将在数据库上执行。

我认为问题可能在where子句中,请尝试设置null而不是"" + ""

Cursor cursor = db.query(TABLE_NAME_KIND, new String[] {"_id", "name", "geburtsdatum", "geschlecht"}, null, null, null, null, null);

答案 1 :(得分:0)

虽然我相信Jurac发布的内容会起作用,但只有几个问题:

  1. 你为什么不插入id?
  2. 你想用“”+“”做什么?
  3. 如果您尝试获取所有行而没有使用您列出的4列名称进行任何过滤,那么是,传递null。

    作为替代方案,请尝试使用原始查询

        String queryString = "SELECT 1 FROM TABLE_NAME_KIND";
    

    Cursor cursor = db.rawQuery(queryString,null);