我有一个在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,但插入数据时没有例外。 name
,geburtsdatum
和geschlecht
都有一些价值。
我无法使用adb检查数据库,因为它无法在我的计算机上运行。 有什么问题?
答案 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发布的内容会起作用,但只有几个问题:
如果您尝试获取所有行而没有使用您列出的4列名称进行任何过滤,那么是,传递null。
作为替代方案,请尝试使用原始查询
String queryString = "SELECT 1 FROM TABLE_NAME_KIND";
Cursor cursor = db.rawQuery(queryString,null);