android - 如何使用 Anko 和 Kotlin 获取 SQLite 表的最大 _id 值?

标签 android database sqlite kotlin anko

DBRecordTable._ID是一个INTEGER + PRIMARY_KEY+ AUTOINCREMENT,我希望得到一个表的最大_id值,如果表中没有数据行将返回零.

我尝试编写代码 select(tableName,DBRecordTable._ID).orderBy(DBRecordTable._ID, Desc).limit(1),但它不正确,我该如何解决?

代码

class DBRecordHandler(private val mDBHelper: DBRecordHelper =DBRecordHelper.instance,
                      private val tableName:String =DBRecordTable.TableNAME,
                      private val idField:String=DBRecordTable._ID
                      ) {

 fun getMaxID():Long=mDBHelper.use{
      var myList=select(tableName,DBRecordTable._ID).orderBy(DBRecordTable._ID, Desc).limit(1); 
 }

}



class DBRecordHelper(mContext: Context = UIApp.instance) : ManagedSQLiteOpenHelper(mContext, DB_NAME, null, DB_VERSION) {

    companion object {
        const val DB_NAME = "record.db"
        const val DB_VERSION = 5
        val instance by lazy { DBRecordHelper() }
    }

    override fun onCreate(db: SQLiteDatabase) {
        db.createTable( DBRecordTable.TableNAME , true,
            DBRecordTable._ID to INTEGER + PRIMARY_KEY+ AUTOINCREMENT,           
            DBRecordTable.CreatedDate to INTEGER
        )
    }   

}

最佳答案

您可以使用 SQL MAX() 函数找到表内容的最大 id:

private fun getMaxID(): Int {
    var maxId = 0
    mDBHelper?.use {
        select(DBRecordTable.TableNAME, "MAX(${DBRecordTable._ID}) as maxId").exec {
            moveToNext()
            maxId = getInt(getColumnIndex("maxId"))
        }
    }
    return maxId
}

关于android - 如何使用 Anko 和 Kotlin 获取 SQLite 表的最大 _id 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53357438/

相关文章:

c# - SQLite:没有这样的表

Sqlite:查询计算某行在 'through'表中被引用的次数

android - 如何检查对 View 的引用是否在android中的另一个 View 内?

java - 用于确定图像属性的 Android Native API(getWidth 等)返回错误值

android - 不推荐使用 RegisterResGeneratingTask,使用 registerGeneratedFolders(FileCollection)

php - 网络/数据库服务器之间的数据传输

database - 如何在 VS 2012 中将静态数据存储在 SQL Server 数据库项目中

java - 多个线程使用数据库 DAO 类方法获取的相同值

SQLite 备份策略

java - 每个 Activity 都必须有自己的模型吗?