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." << mysql_error(&mysql)<<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.Unknown column 'author' in 'where clause'
时间: 2024-02-23 07:56:59 浏览: 92
根据输出信息,错误原因是查询语句中的列名'author'在表中不存在。这可能是由于您的表结构与代码中的查询语句不匹配导致的。您可以尝试以下几个方面进行排查:
1. 检查表结构,确保表中存在名为'author'的列。
2. 检查查询语句中的列名是否正确,是否与实际的表结构一致。
3. 检查MySQL用户的权限是否足够执行查询操作。
如果以上检查都没有问题,建议您尝试打印mysql_error(&mysql)函数的返回值,查看更具体的错误信息,以便更好地定位问题。
相关问题
system("cls"); std::cout << "读取完成" << endl; std::cout << "请选择最短路径要求" << endl; std::cout << "时间:1 " << endl; std::cout << "价格:2 " << endl; cin >> p; system("cls"); switch (p) { case 1: std::cout << "以时间为基准:" << endl; TimeShortPath(graph, s, way, D); for (int i = 0; i < 199; ++i) { if (way[e][i] == n) { c[n - 1] = i; std::cout << cities[i].city << ' '; n++; i = -1; } } std::cout << std::endl; std::cout << "时间:" << D[e] << " h "; TxtWriting(graph, c, n); break; case 2: std::cout << "以价格为基准:" << endl; CostShortPath(graph, s, way, D); for (int i = 0; i < 199; ++i) { if (way[e][i] == n) { c[n - 1] = i; std::cout << cities[i].city << ' '; n++; i = -1; } } std::cout << std::endl; std::cout << "价格:$" << D[e]; TxtWriting(graph, c, n); break; } return 0; }
这段代码实现了一个最短路径算法,并让用户选择是以时间为基准还是以价格为基准进行计算。具体实现过程如下:
1. 清空屏幕并输出提示信息。
2. 让用户选择最短路径的要求(时间或者价格)。
3. 根据用户的选择,调用不同的最短路径算法(TimeShortPath或者CostShortPath)来计算最短路径,并将结果保存在D数组中。
4. 根据way数组中的信息,反向遍历从起点到终点的路径,并将经过的城市名称输出到控制台上。
5. 输出最短路径的时间或者价格,并将路径信息写入到文件中。
6. 返回0,结束程序。
#include<iostream> #include<stdio.h> #include<malloc.h> using namespace std;//声明命名空间 //链栈 typedef struct stacknode{ int data;//数据域 struct stacknode *next;//指针域 }stacknode,*LinkStack; //初始化栈,创建一个空栈 void initLinkStack(LinkStack &L){ L=NULL;//空链站 } //判断栈是否为空 int emptyLinkStack(LinkStack L){ if(L==NULL){ return 0; }else{ return 1; } } //入栈 void pushLinkStack(LinkStack &L,int e){ LinkStack p; p=(LinkStack)malloc(sizeof(stacknode)); p->data=e; p->next=L; L=p; } //出栈 void popLinkStack(LinkStack &L,int &e){ LinkStack p; p=L; e=L->data;//取出栈顶元素给e L=L->next; delete(p); } //十进制转2、8、16进制,采用除基倒取余法 void numberConversionL(int oNumber,int cvNumber){ LinkStack L; //创建栈 int x; initLinkStack(L); //初始化栈 while(oNumber){ x=oNumber%cvNumber; pushLinkStack(L,x);//余数入栈 oNumber=oNumber/cvNumber; } //余数出栈 while(emptyLinkStack(L)){ popLinkStack(L,x); switch(x){ case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9:cout<<x; break; case 10:cout<<"A"; break; case 11:cout<<"B"; break; case 12:cout<<"C"; break; case 13:cout<<"D"; break; case 14:cout<<"E"; break; case 15:cout<<"F"; break; } } } //主函数 int main(){ int oNumber,cvNumber; int oNumberL,cvNumberL; int choose; cout<<"请选择所需功能\n1.使用链栈转换\n2.退出程序"; cout<<endl; //换行 cin>>choose; while(choose!=2){ switch(choose){ case 1:{ cout<<"请输入要转换的十进制数:"<<endl; cin>>oNumberL; cout<<"请输入要转换至的进制,仅限输入2、8以及16:"<<endl; cin>>cvNumberL; numberConversionL(oNumberL,cvNumberL); break; } default: cout<<"\n!!!您的选择不正确,请重新选择!!!\n"; } cout<<endl; //换行 cout<<"请选择所需功能\n1.使用链栈转换\n2.退出程序"; cout<<endl; //换行 cin>>choose; } return 0; }这段代码数制转换器的研究背景和意义
这段代码实现了一个数制转换器,可以将十进制数转换为二进制、八进制或十六进制。数制转换在计算机领域中非常重要,因为不同的进制可以用不同的位数来表示同一个数,而在计算机中,位数的变化会对数据的存储和处理方式产生影响。例如,在二进制中,每一位只能是0或1,而在十进制中,每一位可以是0-9中的任意一个数字。因此,当需要将不同进制的数据进行运算或比较时,需要将它们转换为相同的进制。此外,数制转换也是程序设计和计算机科学中的基础知识之一。
阅读全文