我创建了一条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()});