MyDBHelper myDBHelper=new MyDBHelper(shedingActivity.this); list_p=myDBHelper.setPQuery(bookId); list_h=myDBHelper.setHQuery(bookId); list_b=myDBHelper.setBQuery(bookId); mVolumes = new ArrayList<>(); mVolumes.add("人物"); mVolumes.add("背景"); mVolumes.add("情节"); mChapters = new HashMap<>(); List<setting> chapters1; chapters1=list_h; mChapters.put(mVolumes.get(0), chapters1); List<setting> chapters2; chapters2=list_b; mChapters.put(mVolumes.get(1), chapters2); List<setting> chapters3; chapters3=list_p; mChapters.put(mVolumes.get(2), chapters3);
时间: 2023-06-20 08:05:58 浏览: 58
这段代码是在创建一个数据库帮助类对象MyDBHelper,并在该对象上调用三个查询方法setPQuery、setHQuery和setBQuery,将查询结果分别赋值给三个List对象list_p、list_h和list_b。然后创建一个ArrayList对象mVolumes,并添加三个字符串元素"人物"、"背景"和"情节"。接着创建一个HashMap对象mChapters,并将三个List对象以键值对的形式存储在该HashMap对象中,其中键为mVolumes中的字符串元素,值为对应的List对象。最后,将list_h、list_b和list_p分别赋值给mChapters中的三个键值对,分别对应mVolumes中的三个字符串元素"人物"、"背景"和"情节"。
相关问题
select bk.bookname,get_borrower_name(bk.bookid) as borrower_name from books bk join borrow_info bi on bk.bookid = bi.bookid where bk.in_out = true and bi.return_date is null and get_borrower_name(bk.bookid) = '张三';怎么修改可以使它返回多行数据
要想让查询语句返回多行数据,可以将它改写成存储过程或者使用临时表来存储查询结果。下面是一个使用存储过程的例子:
首先,创建一个存储过程,将查询结果存储到一个临时表中:
```
CREATE PROCEDURE get_borrower_books(IN p_borrower_name CHAR(10))
BEGIN
DROP TEMPORARY TABLE IF EXISTS temp_books;
CREATE TEMPORARY TABLE temp_books (
bookname CHAR(20),
borrower_name CHAR(10)
);
INSERT INTO temp_books
SELECT bk.bookname, get_borrower_name(bk.bookid) as borrower_name
FROM books bk
JOIN borrow_info bi ON bk.bookid = bi.bookid
WHERE bk.in_out = true
AND bi.return_date IS NULL
AND get_borrower_name(bk.bookid) = p_borrower_name;
SELECT * FROM temp_books;
END;
```
然后,执行该存储过程,传入参数 '张三' 来获取结果:
```
CALL get_borrower_books('张三');
```
这将返回一个包含多行数据的结果集,每一行包含一本书的名称和借阅者的姓名。
CREATE DEFINER=`root`@`localhost` FUNCTION `get_borrower_name`(p_bookid char(20)) RETURNS char(10) CHARSET utf8mb4 begin declare v_name char(10); select name into v_name from borrowers b join borrow_info bi on b.id = bi.id join books bk on bk.bookid = bi.bookid where bi.bookid = p_bookid; return v_name; end select bk.bookname,get_borrower_name(bk.bookid) as borrower_name from books bk join borrow_info bi on bk.bookid = bi.bookid where bk.in_out = true and bi.return_date is null and get_borrower_name(bk.bookid) = '张三';出现 Result consisted of more than one row错误
这个错误可能是因为你的`get_borrower_name()`函数返回了多行数据,而你在查询中使用了这个函数,并且设置了`get_borrower_name(bk.bookid) = '张三'`的条件,这样可能会导致查询结果出现多行数据。可以尝试修改查询条件,或者修改`get_borrower_name()`函数,让它只返回一行数据。比如,你可以修改函数,让它只返回第一个匹配的借阅者姓名:
```
CREATE DEFINER=`root`@`localhost` FUNCTION `get_borrower_name`(p_bookid char(20)) RETURNS char(10) CHARSET utf8mb4
BEGIN
DECLARE v_name CHAR(10);
SELECT name INTO v_name FROM borrowers b
JOIN borrow_info bi ON b.id = bi.id
JOIN books bk ON bk.bookid = bi.bookid
WHERE bi.bookid = p_bookid LIMIT 1;
RETURN v_name;
END
```
这个函数使用了`LIMIT 1`语句,表示只返回第一行匹配的数据。这样就可以避免函数返回多行数据的问题了。如果你还是想保留原来的函数逻辑,可以尝试修改查询条件,让它返回唯一的一行数据。比如,你可以修改查询条件,让它只返回第一本被借阅的图书:
```
SELECT bk.bookname, get_borrower_name(bk.bookid) AS borrower_name
FROM books bk
JOIN (
SELECT bookid FROM borrow_info
WHERE return_date IS NULL AND borrower_name = '张三'
ORDER BY borrow_date ASC LIMIT 1
) bi ON bk.bookid = bi.bookid
WHERE bk.in_out = true;
```
这个查询使用了子查询和ORDER BY语句,表示只返回第一本被借阅的图书。这样也可以避免查询结果出现多行数据的问题。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
{{ collect.bookName }} ¥{{ collect.bookPrice }} <button @click="delCollect()"> × </button> new Vue({ el: "#app", data: { userId: '', collectBook: [] }, mounted() { var _this = this; axios.get('/BookShopSystem_war/getUserId') .then((response) => { this.userId = response.data; var userId = this.userId; // 将userId赋值给一个变量 axios({ method: 'get', url: 'http://localhost:8080/BookShopSystem_war/getCollectBook/' + userId }).then(function (result) { var code = result.data.code; var data = result.data.data; if (code == 200) { _this.collectBook = data; } console.log(data) }) }) .catch((error) => { console.log(error); }); }, methods: { delCollect() { var _this = this; axios({ method: "delete", url: "http://localhost:8080/BookShopSystem_war/deleteCollect", data: { userId: _this.userId, bookId: _this.collectBook.bookId } }).then(resp => { alert("取消收藏"); }) } }该取消收藏方法有错,给出原因并纠正
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)