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;为什么输入作者名字后控制台会陷入死循环
时间: 2024-02-10 20:05:18 浏览: 58
C++语言:switch语句最详细讲解.pdf
代码中的问题在于读取作者名字时使用了错误的变量名,导致查询语句中的变量没有被正确赋值,从而查询结果为空,程序陷入死循环。具体来说,代码中使用的变量名是 `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` 变量中。如果查询结果不为空,则会输出查询结果;否则,会输出提示信息“未找到相关图书信息”。
阅读全文