if (cusror.moveToFirst()&&str==true) { do { @SuppressLint("Range") String db_id = cusror.getString(cusror.getColumnIndex("_id")); if (_id.equals(db_id)) { Toast.makeText(admin_addbook.this, "该编号书籍已存在", Toast.LENGTH_LONG).show(); cunzai=true; return; } } while (cusror.moveToNext()); }中的cunzai 如何解决只在if语句中有效
时间: 2024-02-10 16:16:12 浏览: 85
可以将`cunzai`声明为局部变量,并在if语句内部将其赋值为true。这样,`cunzai`变量将只在if语句中有效,并且在if语句外部无法访问。以下是修改后的代码片段:
```
if (cusror.moveToFirst() && str == true) {
boolean cunzai = false; // 声明并初始化局部变量
do {
@SuppressLint("Range") String db_id = cusror.getString(cusror.getColumnIndex("_id"));
if (_id.equals(db_id)) {
Toast.makeText(admin_addbook.this, "该编号书籍已存在", Toast.LENGTH_LONG).show();
cunzai = true; // 在if语句内部将其赋值为true
return;
}
} while (cusror.moveToNext());
// 在if语句外部无法访问cunzai变量
}
```
相关问题
cusror.moveToFirst()中的变量作用域仅限于if语句中
不完全正确。变量的作用域是指变量可以被访问的范围。在这种情况下,变量cursor是在if语句块内部声明并初始化的,因此它的作用域仅限于if语句块内部。如果在if语句块外部尝试访问变量cursor,编译器会报错。但是,如果在if语句块内部声明变量cursor并将其赋值给类成员变量,那么该成员变量的作用域将是整个类。
下面代码的意思 private void queryTitle() { Cursor cursor1= mDatabase.rawQuery("select count(2) from "+DBHelper.TABLE_NAME,null); cursor1.moveToFirst(); long count = cursor1.getLong(0); int num=(int) count; title=new String[num]; id=new int[num]; cursor1.close(); Cursor cursor; cursor = mDatabase.query(DBHelper.TABLE_NAME,DBHelper.TABLE_COLUMNS,null,null,null,null,null); int i=0; while (cursor != null && cursor.moveToNext()) { id[i]=cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_ID)); title[i]=cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_TITLE)); i+=1; } cursor.close(); } class MyBaseAdapter extends BaseAdapter { @Override public int getCount() { Cursor cursor= mDatabase.rawQuery("select count(2) from "+DBHelper.TABLE_NAME,null); cursor.moveToFirst(); long count = cursor.getLong(0); cursor.close(); int num=(int)count; return num; }
这段代码是在 Android 应用程序中对数据库进行查询,并将查询结果显示在 ListView 中。在 queryTitle() 方法中,首先查询数据库中的记录总数,然后根据总数创建一个对应大小的字符串数组和整型数组。接着,使用 query() 方法查询数据库中的所有记录,并将记录的 id 和 title 分别存储在 id 数组和 title 数组中。最后,关闭游标 cursor。
在 MyBaseAdapter 类中,重写了 getCount() 方法。该方法返回数据库中记录的总数。在 getCount() 方法中,先查询数据库中的记录总数,然后关闭游标 cursor,并将记录总数转换为 int 类型并返回。
顺便提一下,该程序使用了自定义的 MyBaseAdapter 类继承自 BaseAdapter 类,并且在 ListView 中使用 MyBaseAdapter 对象进行渲染。该自定义 Adapter 类负责将查询结果显示在 ListView 中。
阅读全文