Android 代码返回列名称,但Kotlin中的列计数为零
我试图在数据库中获取所有数据,这是我的代码Android 代码返回列名称,但Kotlin中的列计数为零,android,sqlite,kotlin,cursor,android-sqlite,Android,Sqlite,Kotlin,Cursor,Android Sqlite,我试图在数据库中获取所有数据,这是我的代码 private fun readAllPoetsDB(): Cursor { val db = readableDatabase return db.rawQuery("SELECT * FROM INFO",null) } fun readAllPoets(): ArrayList<Poet> { val poets = ArrayL
private fun readAllPoetsDB(): Cursor {
val db = readableDatabase
return db.rawQuery("SELECT * FROM INFO",null)
}
fun readAllPoets(): ArrayList<Poet> {
val poets = ArrayList<Poet>()
val cursor = readAllPoetsDB()
println("this is cursor count")
println(cursor.count)
println(cursor.getColumnName(0))
var poetid: String
var faname: String
var enname: String
cursor.moveToNext()
while (!cursor.isAfterLast) {
poetid = cursor.getString(cursor.getColumnIndex(DBPoet.UserEntry.COLUMN_POET_ID))
faname = cursor.getString(cursor.getColumnIndex(DBPoet.UserEntry.COLUMN_FANAME))
enname = cursor.getString(cursor.getColumnIndex(DBPoet.UserEntry.COLUMN_ENNAME))
poets.add(Poet(poetid, faname, enname))
cursor.moveToNext()
}
cursor.close()
return poets
}
行printlncursor.count返回零,但cursor.getColumnName返回正确的名称。
请不要忘记,我已经检查了我的表名,它是100%正确的。
此外,我的数据库文件是本地的,它不是在应用程序中创建的,而是手动添加的。
那么问题出在哪里呢?来自Cursor.java:
cursor.count getCount返回游标返回的行数。
cursor.columnCount getColumnCount返回光标中的列数。但我的数据库有3行。cursor.count返回零是什么原因造成的?可以打印while循环中的行吗?如果未打印任何内容且cursor.count返回0,则表为空。这正是发生的情况,但表不是空的。这是本地文件,我可以查看。你说的本地是什么意思?它应该在设备/模拟器中。提取它并检查它是否为空。本地的意思是我自己手动将它添加到项目中。它有43行3列数据字段。