在开发一个安卓应用,需要读取SQLite数据库。读取一张空表时出错:
其中的一个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"); }
出错信息提示,表中有一行数据(???)。可是这是一张空表:
然后进行更进一步的分析,如下:
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"); // }
终于发现在哪里出错了。
那一行只有一列,就是自己想要的max(id)。