Cursor cursor= db.rawQuery("select*from course where cNumber=? OR cName=?",new String[]{input,input}); if(cursor.moveToFirst()){ ContentValues values=new ContentValues(); values.put("scNumber",cursor.getString(0)); values.put("scName",cursor.getString(1)); db2.insert("student_course",null,values); Toast.makeText(MainActivity2.this,"加入成功",Toast.LENGTH_LONG).show(); }else{ Toast toast = Toast.makeText(getApplicationContext(), "无效的班课号", Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); } cursor.close(); Toast错哪了
时间: 2024-01-03 08:03:14 浏览: 112
根据代码的上下文来看,Toast应该是放在if和else语句块外面的,因为无论是加入成功还是无效的班课号,都需要显示Toast。所以正确的代码应该是这样的:
```
Cursor cursor= db.rawQuery("select * from course where cNumber=? OR cName=?",new String[]{input,input});
if(cursor.moveToFirst()){
ContentValues values=new ContentValues();
values.put("scNumber",cursor.getString(0));
values.put("scName",cursor.getString(1));
db2.insert("student_course",null,values);
Toast.makeText(MainActivity2.this,"加入成功",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(), "无效的班课号", Toast.LENGTH_SHORT).show();
}
cursor.close();
```
这样就可以正确地显示Toast了。
相关问题
Cursor cursor = db.rawQuery( "select * from userInfo where id = ? and password = ?", new String[]{id, password} );
这段代码是针对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` 的类,而不是您在问题中提到的匿名内部类。这是因为使用匿名内部类可能会导致其他作用域问题,并且不易于重用代码。
阅读全文