Cursor cursor = db.rawQuery( "select * from userInfo where id = ? and password = ?", new String[]{id, password} );
时间: 2024-02-14 17:35:47 浏览: 95
这段代码是针对Android中SQLite数据库的操作。在这段代码中,首先创建了一个Cursor对象,然后使用db.rawQuery()方法查询数据库中的userInfo表格,查询的条件是id和password两个字段的值分别为传入的id和password参数。其中,?是一个占位符,表示查询条件的值需要动态传入。在这里,使用了new String[]{}语法来传入参数,其中第一个参数是id,第二个参数是password。最后,查询的结果会存储在Cursor对象中,可以通过Cursor对象来遍历查询结果。
相关问题
BroadcastReceiver receiver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String account=intent.getStringExtra("account"); String password=intent.getStringExtra("password"); } };执行了之后执行Cursor cursor= db.rawQuery("select*from user where account=?",new String[]{account});出错
这个错误很可能是因为 `account` 变量没有被正确地传递到 `db.rawQuery()` 方法中。这是因为 `account` 变量是在 `onReceive()` 方法中被定义的,而 `db.rawQuery()` 方法是在 `onReceive()` 方法之外调用的。因此,`account` 变量的作用域仅限于 `onReceive()` 方法内部。
要解决这个问题,您可以在 `onReceive()` 方法中将 `account` 变量存储在类成员变量中,并在 `db.rawQuery()` 方法中使用该成员变量。例如:
```
public class MyBroadcastReceiver extends BroadcastReceiver {
private String account;
@Override
public void onReceive(Context context, Intent intent) {
account = intent.getStringExtra("account");
String password = intent.getStringExtra("password");
// ... 其他代码 ...
}
private void doDatabaseQuery() {
Cursor cursor = db.rawQuery("select * from user where account = ?", new String[]{account});
// ... 其他代码 ...
}
}
```
请注意,这里使用了一个名为 `MyBroadcastReceiver` 的类,而不是您在问题中提到的匿名内部类。这是因为使用匿名内部类可能会导致其他作用域问题,并且不易于重用代码。
Cursor cursor = db.rawQuery("SELECT * FROM date_score WHERE date = ?", new String[]{COLUMN_NAME_DATE});这段代码时什么意思呢?
这段代码使用了Android中的SQLiteDatabase类的rawQuery()方法,通过执行一条原生SQL查询语句,来查询数据库中某个表中符合条件的数据。具体来说,这条语句查询了名为date_score的表中,日期(date)列的值等于COLUMN_NAME_DATE变量的值的所有行数据。其中,'?'是占位符,通过第二个参数new String[]{COLUMN_NAME_DATE}传入具体的值,防止SQL注入攻击。最后,查询的结果被封装到一个Cursor对象中返回。
阅读全文