db = dbHelper.getWritableDatabase();
时间: 2023-11-13 10:17:31 浏览: 34
这行代码的作用是获取一个可写的数据库对象。首先,它通过调用DbHelper类中的getWritableDatabase()方法,获取一个SQLiteOpenHelper对象。然后,它调用SQLiteOpenHelper对象的getWritableDatabase()方法,获取一个SQLiteDatabase对象,该对象可用于执行SQL语句,并对应着一个具体的SQLite数据库文件。如果该数据库文件不存在,则会调用onCreate()方法创建一个新的数据库文件。如果该数据库文件已经存在,则会检查数据库版本号,如果当前版本号高于上一次打开时的版本号,则会调用onUpgrade()方法升级数据库。最后,该方法将获取到的SQLiteDatabase对象赋值给了db变量,以便后续的数据库操作使用。
相关问题
public void BorrowBook(DBHelper dbHelper,String bid,int new_inventory){ SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("inventory",new_inventory); db.update("book",values,"id=?",new String[]{bid}); db.close();解释每一行代码
1. `public void BorrowBook(DBHelper dbHelper,String bid,int new_inventory){`: 这行代码定义了一个名为`BorrowBook`的公共函数,它有三个参数:`dbHelper`是一个类型为`DBHelper`的对象,`bid`是一个表示书籍编号的字符串,`new_inventory`是一个整型变量,表示书籍的新库存量。
2. `SQLiteDatabase db = dbHelper.getWritableDatabase();`: 这行代码创建了一个`SQLiteDatabase`对象`db`,并调用`dbHelper`对象的`getWritableDatabase()`方法来获取可写的数据库实例。
3. `ContentValues values = new ContentValues();`: 这行代码创建了一个`ContentValues`对象`values`,它用于存储要更新的数据。
4. `values.put("inventory",new_inventory);`: 这行代码将`new_inventory`的值保存到`values`对象中,键为`inventory`。
5. `db.update("book",values,"id=?",new String[]{bid});`: 这行代码更新了`book`表中`id`为`bid`的记录,将`inventory`字段的值设为`new_inventory`。
6. `db.close();`: 这行代码关闭了数据库连接。
public int FindInventory(DBHelper dbHelper,String bid){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.rawQuery("select inventory from book where id = ?",new String[]{bid}); int number = 0; if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ number = cursor.getInt(0); } } return number; } }public ArrayList<Book> SearchCollection(DBHelper dbHelper,String searcher){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.rawQuery("select * from book where id in ("+searcher+")",null); ArrayList<Book> list = new ArrayList<>(); if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ String id = cursor.getString(cursor.getColumnIndex("id")); String bookname = cursor.getString(cursor.getColumnIndex("bookname")); String author = cursor.getString(cursor.getColumnIndex("author")); int inventory = cursor.getInt(cursor.getColumnIndex("inventory")); Book book = new Book(id,bookname,author,inventory,2); list.add(book); } } db.close(); return list; }解释每一行代码
public int FindInventory(DBHelper dbHelper,String bid){ //定义一个名为FindInventory的函数,输入参数为DBHelper类的对象dbHelper和字符串bid。
SQLiteDatabase db = dbHelper.getWritableDatabase(); //获取可以读写的数据库对象。
Cursor cursor = db.rawQuery("select inventory from book where id = ?",new String[]{bid}); //查询数据库中id为bid的图书的库存inventory。
int number = 0; //初始化number为0。
if (cursor != null && cursor.getCount() > 0){ //判断cursor是否为空,以及查询结果是否大于0。
while (cursor.moveToNext()){ //如果查询结果不为空,则遍历所有查询结果。
number = cursor.getInt(0); //将查询结果的第0列的值(即库存inventory)赋值给number。
}
}
return number; //返回查询到的库存。
}
public ArrayList<Book> SearchCollection(DBHelper dbHelper,String searcher){ //定义一个名为SearchCollection的函数,输入参数为DBHelper类的对象dbHelper和字符串searcher。
SQLiteDatabase db = dbHelper.getWritableDatabase(); //获取可以读写的数据库对象。
Cursor cursor = db.rawQuery("select * from book where id in ("+searcher+")",null); //查询数据库中id为searcher中任意一个的图书信息。
ArrayList<Book> list = new ArrayList<>(); //创建一个ArrayList对象,用于存储查询结果。
if (cursor != null && cursor.getCount() > 0){ //判断cursor是否为空,以及查询结果是否大于0。
while (cursor.moveToNext()){ //如果查询结果不为空,则遍历所有查询结果。
String id = cursor.getString(cursor.getColumnIndex("id")); //获取查询结果中id列的值。
String bookname = cursor.getString(cursor.getColumnIndex("bookname")); //获取查询结果中bookname列的值。
String author = cursor.getString(cursor.getColumnIndex("author")); //获取查询结果中author列的值。
int inventory = cursor.getInt(cursor.getColumnIndex("inventory")); //获取查询结果中inventory列的值。
Book book = new Book(id,bookname,author,inventory,2); //创建一个Book类的对象book,将查询结果赋值给它。
list.add(book); //将book添加到list中。
}
}
db.close(); //关闭数据库。
return list; //返回查询结果。