【发布时间】:2018-11-18 02:44:59
【问题描述】:
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
)
}
}
【问题讨论】:
-
谢谢,但我希望用 Anko 来做。
-
你可以试试 select(tableName,DBRecordTable._ID).whereargs(SELECT MAX(DBRecordTable._ID) FROM tableName)
标签: android database sqlite kotlin anko