Android:如何将ExecuteScalar移植到Java?
SqlCommand.ExecuteScalar方法
执行查询,并返回查询返回的结果集中第一行的第一列。 其他列或行将被忽略。
我想这将涉及大量使用generics。
假设我有一个SQLiteDatabase / Cursor对象。
看看SQLLiteStatement
long simpleQueryForLong()
执行一个返回带有数值的1 x 1表的语句。
String simpleQueryForString()
执行一个返回带有文本值的1 x 1表的语句。
这个逻辑对我有用:
public int ExecuteScalar(/* code...*/) { Cursor cursor = database.rawQuery(sql, selectionArgs); try { cursor.moveToNext(); int val = cursor.getInt(0); cursor.close(); return val; } catch (Exception e) { /* code...*/ } return -1; }
如果您正在检索主键,则可以使用语句getGeneratedKeys方法,该方法在插入后返回生成的键的resultSet。
给数据库对象是db
long result = db.compileStatement("select count(*) from some_table").simpleQueryForLong();