我在检查游标是否为空时遇到了一个严重问题,游标从表中加载了一些数据,如果它返回null值,它就会崩溃,我尝试了几种解决方案,例如(if(c == null))( == 0)),我什至尝试了c.isBeforeFirst()
光标的功能是:
fun getarrayList1(dbHelper: DBHelper,type: Int): ArrayList<String> {
var rv = ArrayList<String>()
var query = ""
val db = dbHelper.writableDatabase
if (type == TYPE_DH) {
query = "SELECT " + DBHelper.COL_45 + " FROM " + DBHelper.TABLE_HOL + " WHERE (" + DBHelper.COL_43 + " LIKE '%" + sel2 + "%') AND (" + DBHelper.COL_44 + " LIKE '%" + sel3 + "%')"
} else {
}
Log.d("GetaRRAYLIST","Query is \n\t" + query)
val c: Cursor = db.rawQuery(query,null)
c.moveToFirst()
if (c.isBeforeFirst()) {
getnull(dbHelper)
} else {
while (c.moveToNext()) {
rv.add(c.getString(0))
textView13.text = rv.toString()
return rv
}
}
c.close()
return rv
}
在这里,我试图检查光标是否返回null值,然后程序将执行另一个功能:
fun getnull(dbHelper: DBHelper) : ArrayList<String> {
var rv = ArrayList<String>()
var query1 = ""
val db = dbHelper.writableDatabase
query1 = "SELECT " + DBHelper.COL_45 + " FROM " + DBHelper.TABLE_HOL + " WHERE " + DBHelper.COL_43 + " LIKE '%" + sel2 + "%'"
val c2 = db.rawQuery(query1,null)
textView13.text = "0"
showToast("هذا السيد / " + sel3 + " لم يحصل على أي أجازات سابقة")
c2.close()
return rv
}
在我的程序中,我试图保存员工休假的数据。在我的页面中,我记得有两列(第一列是“雇员姓名”,第二列是他休假的次数)。在主函数中,选择(+ DBHelper.COL_44 +“ LIKE'%” + sel3 +“%'”)的一部分,我知道它将返回空值,因为它将返回未使用的人的名字一个假期了。
所以有人可以帮助我解决该问题吗?