Android SQLite Cursor读取空表出错

时间:2022-10-06 08:26:22

在开发一个安卓应用,需要读取SQLite数据库。读取一张空表时出错:

Android SQLite Cursor读取空表出错

其中的一个tag为"Signup"的内容,"1  /truetrue",对应的程序段如下:

db = dbHelper.getWritableDatabase();
		
Cursor cursor = db.rawQuery("select max(id) from tb_account", null);
Log.i("Signup", String.valueOf(cursor.getCount()) + " /" + String.valueOf(cursor.moveToNext()) + 
	String.valueOf(cursor.moveToFirst()));
if(cursor.getCount() != 0 && cursor.moveToFirst()){
	String sID = cursor.getString(cursor.getColumnIndex("id"));
	tb_accountInfo.setsID(String.valueOf(Integer.valueOf(sID) + 1));
} else {
	tb_accountInfo.setsID("1");
}
		

出错信息提示,表中有一行数据(???)。可是这是一张空表:

Android SQLite Cursor读取空表出错

然后进行更进一步的分析,如下:

		db = dbHelper.getWritableDatabase();
		
		Cursor cursor = db.rawQuery("select max(id) from tb_account", null);
		Log.i("Signup", String.valueOf(cursor.getCount()) + "  " + String.valueOf(cursor.moveToNext()) + 
				"  " + String.valueOf(cursor.moveToFirst()));
		Log.i("Signup", Arrays.toString(cursor.getColumnNames()));
		for(int i = 0; i < cursor.getColumnCount(); i++){
			Log.i("Signup", i + "  " + cursor.getString(i) + "  " + cursor.getColumnName(i));
		}
//		if(cursor.getCount() != 0 && cursor.moveToFirst()){
//			String sID = cursor.getString(cursor.getColumnIndex("id"));
//			tb_accountInfo.setsID(String.valueOf(Integer.valueOf(sID) + 1));
//		} else {
//			tb_accountInfo.setsID("1");
//		}

Android SQLite Cursor读取空表出错

终于发现在哪里出错了。

那一行只有一列,就是自己想要的max(id)。