我创建了一个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 = statements.executeQuery();如何将 statements.execute() 存储在变量中以获取行详细信息?
最佳答案
简而言之,您不使用SQLiteStatement,它仅用于/(能够)返回单行的单列:-
Represents a statement that can be executed against a database. The statement cannot return multiple rows or columns, but single value (1 x 1) result sets are supported. 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));
}
- ??????代表许多方法,例如获取Int、获取Long……
- 参见Cursor
或者,您也可以使用 rawQuery 方法,例如:
Cursor csr = db.rawQuery("Select * from tracking where track_id= ?",new String[]{track_data.getText().toString()});
关于java - 准备语句 Sqlite Android 的跟踪行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58399879/