为什么我的sql命令总是询问失败,我的代码错在哪里了?
#include
#include
#include
#include
#include
#include //因为要进行网络连接
#include //因为使用了MySQL C API访问mysql数据库
#include // easyX库文件
void query_database(LPCTSTR exam_name);
int main() {
// 初始化EasyX窗口
initgraph(640, 480);
// 创建输入框
TCHAR exam_name[100];
InputBox(exam_name, 100, _T("请输入考试名称"), _T("制作试卷"), _T(""), 0, 0, false);
query_database(exam_name);
// 关闭EasyX窗口
closegraph();
}
void query_database(LPCTSTR exam_name)
{
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "root", "", "student", 0, NULL, 0)) {
printf("连接数据库失败");
}
char query[100];
sprintf(query, "SELECT * FROM '%s';", exam_name);
// 执行查询
int res = mysql_query(&mysql, query);
if (res) {
// 查询失败
printf("查询失败");
mysql_close(&mysql);
}
// 获取查询结果集
MYSQL_RES *result = mysql_store_result(&mysql);
if (result) {
// 获取结果集的行数
int num_rows = mysql_num_rows(result);
if (num_rows > 0) {
// 有重复的exam_name
printf("该考试名称已存在,请重新输入!\n");
}
// 释放结果集
mysql_free_result(result);
} else {
// 获取结果集失败
printf("结果集失败");
}
// 关闭数据库连接
mysql_close(&mysql);
}
“Devil组”引证GPT后的撰写:
在MySQL中,表名不应该用单引号括起来。应该改为:
sprintf(query, "SELECT * FROM %s;", exam_name);
建议在执行SQL语句前检查一下数据库连接是否成功,如下所示:
if (mysql_ping(&mysql) != 0) {
printf("数据库连接失败");
return;
}
试试
sprintf(query, "SELECT * FROM %s;", exam_name);
一个注意的点是引号,一个注意的点是分号。
(建议少出现中文,乱码也会有影响hh)