case 3: cout << "按作者名查找图书信息\n" << endl; cout << "请输入要查询的作者名字:"; cin >> book_author; // 修正变量名 query = "select * from books where author = '" + book_author + "'"; if (mysql_query(&mysql, query.c_str())) { cout << "Error: Query[查询成功] fail." << endl; break; } res = mysql_store_result(&mysql); row = mysql_fetch_row(res); if (row) { // 判断查询结果是否为空 cout << "编号: " << row[0] << " 书名: " << row[1] << " 当前数量: " << row[2] << " 价格:¥" << row[3] << " 作者:" << row[4] << endl; } else { cout << "未找到相关图书信息" << endl; } break; } break;运行后为什么没有出现图书信息而是输出Error: Query[查询成功] fail.
时间: 2024-02-23 08:56:57 浏览: 16
根据代码,出现"Error: Query[查询成功] fail."的原因可能是mysql_query()函数执行失败导致的。这可能是由于MySQL连接出现问题、查询语句错误或者权限不足导致的。您可以尝试检查以下几个方面:
1. 检查MySQL连接是否成功,连接字符串是否正确。
2. 检查查询语句是否正确,特别是变量名是否正确。
3. 检查MySQL用户权限是否足够执行查询操作。
如果以上检查都没有问题,可以尝试打印mysql_error(&mysql)函数的返回值,查看具体的错误信息,以便更好地定位问题。
相关问题
case 3: cout << "按作者名查找图书信息\n" << endl; cout << "请输入要查询的作者名字:"; cin >> book_id; query = "select * from books where author = '" + book_author + "'"; if (mysql_query(&mysql, query.c_str())) { cout << "Error: Query[查询成功] fail." << endl; break; } res = mysql_store_result(&mysql); //查询结果集 row = mysql_fetch_row(res); cout << "编号: " << row[0] << " 书名: " << row[1] << " 当前数量: " << row[2] << " 价格:¥" << row[3] << " 作者:" << row[4] << endl; break;为什么输入作者名字后控制台会陷入死循环
代码中的问题在于读取作者名字时使用了错误的变量名,导致查询语句中的变量没有被正确赋值,从而查询结果为空,程序陷入死循环。具体来说,代码中使用的变量名是 `book_id`,而实际上应该使用的是 `book_author`。
下面是修改后的代码:
```
case 3:
cout << "按作者名查找图书信息\n" << endl;
cout << "请输入要查询的作者名字:";
cin >> book_author; // 修正变量名
query = "select * from books where author = '" + book_author + "'";
if (mysql_query(&mysql, query.c_str())) {
cout << "Error: Query[查询成功] fail." << endl;
break;
}
res = mysql_store_result(&mysql);
row = mysql_fetch_row(res);
if (row) { // 判断查询结果是否为空
cout << "编号: " << row[0] << " 书名: " << row[1] << " 当前数量: " << row[2] << " 价格:¥" << row[3] << " 作者:" << row[4] << endl;
} else {
cout << "未找到相关图书信息" << endl;
}
break;
```
修改后的代码会先读取用户输入的作者名字,并使用该名字生成查询语句。接着,查询语句会被发送给 MySQL 数据库进行查询,查询结果会被存储在 `res` 变量中。如果查询结果不为空,则会输出查询结果;否则,会输出提示信息“未找到相关图书信息”。
switch (n) { case 1: cout << "The number is 1" << endl; case 2: cout << "The number is 2" << endl; break; default: cout << "The number is not 1 or 2" << endl; }
这段代码是一个 switch 语句,用于根据变量 n 的值输出不同的结果。
当 n 的值为 1 时,会依次执行 case 1 和 case 2 中的语句,所以输出结果为:The number is 1 The number is 2。
当 n 的值为 2 时,会执行 case 2 中的语句,输出结果为:The number is 2。
当 n 的值不为 1 或 2 时,会执行 default 中的语句,输出结果为:The number is not 1 or 2。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)