public ArrayList<Book> BookDetails(DBHelper dbHelper,String bid){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("book",new String[]{"ISBN","bookname","author","press", "publicationtime","category","synopsis","inventory","page"},"id = ?", new String[]{bid + ""},null,null,null); ArrayList<Book> list = new ArrayList<>(); if (cursor != null && cursor.getCount() > 0){ while (cursor.moveToNext()){ String ISBN = cursor.getString(cursor.getColumnIndex("ISBN")); String bookname = cursor.getString(cursor.getColumnIndex("bookname")); String author = cursor.getString(cursor.getColumnIndex("author")); String press = cursor.getString(cursor.getColumnIndex("press")); String publicationtime = cursor.getString(cursor.getColumnIndex("publicationtime")); String category = cursor.getString(cursor.getColumnIndex("category")); String synopsis = cursor.getString(cursor.getColumnIndex("synopsis")); int inventory = cursor.getInt(cursor.getColumnIndex("inventory")); int page = cursor.getInt(cursor.getColumnIndex("page")); Book book = new Book(ISBN,bookname,author,press,publicationtime,category,synopsis,inventory,page); list.add(book); } } db.close(); return list; } //删除图书 public boolean DeleteBook(DBHelper dbHelper,String id){ SQLiteDatabase db = dbHelper.getWritableDatabase(); int flag = db.delete("book","id=?",new String[]{id + ""}); db.close(); boolean result; if (flag == -1){ result = false; }else { result = true; } return result; }解释每一行代码
时间: 2024-03-31 21:32:42 浏览: 168
这段代码是一个Android应用程序中与数据库交互的部分。它包含两个方法:`BookDetails()`和`DeleteBook()`。
`BookDetails()`方法的作用是根据传入的参数`dbHelper`和`bid`,从数据库中查询指定id的图书详细信息,并返回一个ArrayList<Book>对象。具体解释如下:
1. `SQLiteDatabase db = dbHelper.getWritableDatabase();`:获取一个可写的数据库对象。
2. `Cursor cursor = db.query("book",new String[]{"ISBN","bookname","author","press","publicationtime","category","synopsis","inventory","page"},"id = ?",new String[]{bid + ""},null,null,null);`:执行一个查询操作,查询表名为"book",并且返回的列为"ISBN","bookname","author","press","publicationtime","category","synopsis","inventory","page",其中"id=?"是查询条件,使用`new String[]{bid + ""}`表示要查询的id值。查询结果返回一个Cursor对象。
3. `ArrayList<Book> list = new ArrayList<>();`:创建一个`ArrayList<Book>`对象,用于存储查询结果。
4. `if (cursor != null && cursor.getCount() > 0){`:判断查询结果是否为空,如果不为空,则执行以下操作:
5. `while (cursor.moveToNext()){`:遍历查询结果。
6. `String ISBN = cursor.getString(cursor.getColumnIndex("ISBN"));`:获取查询结果中"ISBN"列的值。
7. `String bookname = cursor.getString(cursor.getColumnIndex("bookname"));`:获取查询结果中"bookname"列的值。
8. `String author = cursor.getString(cursor.getColumnIndex("author"));`:获取查询结果中"author"列的值。
9. `String press = cursor.getString(cursor.getColumnIndex("press"));`:获取查询结果中"press"列的值。
10. `String publicationtime = cursor.getString(cursor.getColumnIndex("publicationtime"));`:获取查询结果中"publicationtime"列的值。
11. `String category = cursor.getString(cursor.getColumnIndex("category"));`:获取查询结果中"category"列的值。
12. `String synopsis = cursor.getString(cursor.getColumnIndex("synopsis"));`:获取查询结果中"synopsis"列的值。
13. `int inventory = cursor.getInt(cursor.getColumnIndex("inventory"));`:获取查询结果中"inventory"列的值。
14. `int page = cursor.getInt(cursor.getColumnIndex("page"));`:获取查询结果中"page"列的值。
15. `Book book = new Book(ISBN,bookname,author,press,publicationtime,category,synopsis,inventory,page);`:创建一个`Book`对象,将查询结果中的各个列的值传入。
16. `list.add(book);`:将该`Book`对象添加到`ArrayList<Book>`对象中。
17. `db.close();`:关闭数据库连接。
18. `return list;`:返回存储查询结果的`ArrayList<Book>`对象。
`DeleteBook()`方法的作用是根据传入的参数`dbHelper`和`id`,从数据库中删除指定id的图书,并返回一个boolean类型的值表示操作是否成功。具体解释如下:
1. `SQLiteDatabase db = dbHelper.getWritableDatabase();`:获取一个可写的数据库对象。
2. `int flag = db.delete("book","id=?",new String[]{id + ""});`:执行一个删除操作,删除表名为"book",并且"id=?"是删除条件,使用`new String[]{id + ""}`表示要删除的id值。删除操作的结果返回一个int类型的值。
3. `db.close();`:关闭数据库连接。
4. `boolean result;`:定义一个boolean类型的变量`result`。
5. `if (flag == -1){`:判断删除操作的结果是否为-1,如果是,则表示操作失败。
6. `result = false;`:将`result`赋值为false。
7. `}else {`:如果删除操作的结果不为-1,则表示操作成功。
8. `result = true;`:将`result`赋值为true。
9. `return result;`:返回`result`的值,表示删除操作是否成功。
阅读全文