1

我有一个在 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,但是插入数据时没有异常。namegeburtsdatum并且geschlecht都有一些值。

我无法使用 adb 检查数据库,因为它在我的计算机上不起作用。问题是什么?

4

2 回答 2

1

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

我认为问题可能出在 where 子句中,请尝试nullset"" + ""

Cursor cursor = db.query(TABLE_NAME_KIND, new String[] {"_id", "name", "geburtsdatum", "geschlecht"}, null, null, null, null, null);
于 2013-05-02T22:31:45.337 回答
0

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

  1. 为什么不插入id?
  2. 你想用“”+“”做什么?

如果您尝试获取所有行而不使用您列出的 4 个列名称进行任何过滤,那么是的,传递 null。

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

    String queryString = "SELECT 1 FROM TABLE_NAME_KIND";

光标 cursor = db.rawQuery(queryString, null);

于 2013-05-04T00:31:21.753 回答