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();