光标为空
Cursor is empty
我有两个按钮,一个向数据库添加数据,另一个获取所有数据。 Table 是我的 class,其中包含有关 table 的信息(Table.TABLE_NAME == "table")。但是光标总是空的。我试过这个 db.query(Table.TABLE_NAME,null,null,null,null,null,null) 但它也不起作用。
public void onClick(View v) {
DBHelper dbHelper = new DBHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = null;
switch (v.getId()){
case R.id.btnAdd:
ContentValues contentValues = new ContentValues();
contentValues.put("Name",etName.getText().toString());
contentValues.put("Surname",etSurname.getText().toString());
contentValues.put("Age",etAge.getText().toString());
contentValues.put("City",etCity.getText().toString());
db.insert(Table.TABLE_NAME,null,contentValues);
Log.d(TAG,etName.getText().toString() +" " + etSurname.getText().toString() +" " + etAge.getText().toString()+" " + etCity.getText().toString());
break;
case R.id.btnSearch:
cursor = db.rawQuery("select * from "+Table.TABLE_NAME,null);
break;
}
if (cursor != null) {
if(cursor.moveToFirst()) {
String str;
do {
str = "";
for (String cn : cursor.getColumnNames()) {
str = str.concat(cn + " = " + cursor.getString(cursor.getColumnIndex(cn)) + "; ");
}
} while (cursor.moveToNext());
}
cursor.close();
}else {
Log.d(TAG,"null");
}
db.close();
}
您的游标始终为空,因为您从未对其进行初始化。
尝试这样的事情:
Cursor cursor = db .query(TABLE_NAME, columns, null, null, null, null, null);
但在你的开关块之外 - 否则无法到达。
使用调试器,它会告诉你所有你需要知道的关于实际发生的事情。
你也可以考虑使用https://github.com/square/sqlbrite;
它将帮助您在各种情况下同步您的数据。
使用dbHelper.getReadableDatabase()
从数据库获取数据。
试试这个:
case R.id.btnSearch:
db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("select * from "+Table.TABLE_NAME,null);
break;
我有两个按钮,一个向数据库添加数据,另一个获取所有数据。 Table 是我的 class,其中包含有关 table 的信息(Table.TABLE_NAME == "table")。但是光标总是空的。我试过这个 db.query(Table.TABLE_NAME,null,null,null,null,null,null) 但它也不起作用。
public void onClick(View v) {
DBHelper dbHelper = new DBHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor cursor = null;
switch (v.getId()){
case R.id.btnAdd:
ContentValues contentValues = new ContentValues();
contentValues.put("Name",etName.getText().toString());
contentValues.put("Surname",etSurname.getText().toString());
contentValues.put("Age",etAge.getText().toString());
contentValues.put("City",etCity.getText().toString());
db.insert(Table.TABLE_NAME,null,contentValues);
Log.d(TAG,etName.getText().toString() +" " + etSurname.getText().toString() +" " + etAge.getText().toString()+" " + etCity.getText().toString());
break;
case R.id.btnSearch:
cursor = db.rawQuery("select * from "+Table.TABLE_NAME,null);
break;
}
if (cursor != null) {
if(cursor.moveToFirst()) {
String str;
do {
str = "";
for (String cn : cursor.getColumnNames()) {
str = str.concat(cn + " = " + cursor.getString(cursor.getColumnIndex(cn)) + "; ");
}
} while (cursor.moveToNext());
}
cursor.close();
}else {
Log.d(TAG,"null");
}
db.close();
}
您的游标始终为空,因为您从未对其进行初始化。 尝试这样的事情:
Cursor cursor = db .query(TABLE_NAME, columns, null, null, null, null, null);
但在你的开关块之外 - 否则无法到达。
使用调试器,它会告诉你所有你需要知道的关于实际发生的事情。
你也可以考虑使用https://github.com/square/sqlbrite; 它将帮助您在各种情况下同步您的数据。
使用dbHelper.getReadableDatabase()
从数据库获取数据。
试试这个:
case R.id.btnSearch:
db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("select * from "+Table.TABLE_NAME,null);
break;