我创建了一条Prepared语句来获取我的track_id所在的行。由于我是初学者,因此在理解如何从一整行中获取值方面遇到问题
我的代码是:

 public SQLiteStatement retrieveData(){
        SQLiteDatabase db = this.getWritableDatabase();
        SQLiteStatement stmt = db.compileStatement("Select * from tracking where track_id= ?");
        return stmt;


SQLiteStatement statement = db.retrieveData();
                statement.bindString(1,track_data.getText().toString());
                statement.execute()


就像在SQL数据库中一样,我们使用ResultSet result = statement.executeQuery();。如何将statement.execute()存储在变量中以获取行详细信息?

最佳答案

简而言之,您不使用SQLiteStatement,它仅用于/(能够)按以下方式返回单行的单列:


表示可以针对数据库执行的语句。的
语句不能返回多行或多列,而只能返回一个值(1
x 1)支持结果集。
SQLiteStatement


相反,您将使用:-

SQLiteDatabase db = this.getWritableDatabase();
Cursor csr = db.query("tracking",null /* all columns aka */","track_id=?",new String[]{track_data.getText().toString()},null,null,null);
while (csr.moveToNext()) {
    // and for each column value you wanted
    my_value = csr.get??????(csr.getColumnIndex(the_column_name_as_a_string));
    // e.g. another my_other_value = csr.get??????(csr.getColumnIndex(the_column_name_as_a_string));
}



??????代表许多方法,例如getInt,getLong .........
Cursor


或者,也可以不使用便捷方法查询,而可以使用rawQuery方法,例如

Cursor csr = db.rawQuery("Select * from tracking where track_id= ?",new String[]{track_data.getText().toString()});

07-26 09:42