为了检测和通报错误,MySQL提供了使用mysql_errno()和mysql_error()函数访问错误信息的机制。它们能返回关于最近调用的函数的错误代码或错误消息,最近调用的函数可能成功也可能失败,这样,你就能判断错误是在何时出现的,以及错误是什么。
Mysql中CAPI的学生信息管理系统
首先我是在fedora-8中进行的实验
我把mysql需要的库安装在/usr/lib下,头文件安装在/usr/include/mysql/mysql.h下
利用 mysql中的C API对学生信息进行单个表格的管理。
部分源代码:
void Show(char Table_Name[]) //输出表格内容
{
char str[25];
sprintf(str, "select * from %s", Table_Name);
mysql_real_query(mysql, str, (unsigned int)strlen(str));
results = mysql_store_result(mysql);
printf("\n");
while((field = mysql_fetch_field(results)))
{
printf("%s\t\t", field->name);
}printf("\n");
while((record = mysql_fetch_row(results)))
{
num_fields = mysql_num_fields(results);
for(i = 0; i < num_fields; i++)
{
printf("%s\t\t", record[i]);
}printf("\n");
}
mysql_free_result(results);
}
?
void Insert(char Table_Name[]) //添加信息
{
char str1[4][10];
char str[30];
printf("请输入名字: ");
scanf("%s", str1[0]);
printf("请输入学号: ");
scanf("%s", str1[1]);
printf("请输入数学成绩: ");
scanf("%s", str1[2]);
printf("请输入语文成绩: ");
scanf("%s", str1[3]);
sprintf(str, "Insert into %s values(\"%s\", \"%s\", \"%s\", \"%s\")", Table_Name,str1[0],str1[1],str1[2],str1[3]);
printf("\n>>>%s\n", str);
mysql_real_query(mysql, str, (unsigned int)strlen(str));
printf(">>>添加成功!!!\n\n");
}
?
void Delete(char Table_Name[]) //删除信息
{
char Delete_Name[10];
char Delete_Str[40];
printf("请输入要删除的信息的名字: ");
scanf("%s", Delete_Name);
sprintf(Delete_Str, "Delete from %s where name=\"%s\"", Table_Name, Delete_Name);
printf("\n>>>%s\n", Delete_Str);
mysql_real_query(mysql, Delete_Str, (unsigned int)strlen(Delete_Str));
printf(">>>删除成功!!!\n\n");
}
void Find(char Table_Name[]) //修改信息
{
char Find_Str[40];
char Find_Name[10];
printf("请选择要查询的名字: ");
scanf("%s", Find_Name);
sprintf(Find_Str,"select * from %s where name=\"%s\"", Table_Name, Find_Name);
printf("\n>>>%s\n", Find_Str);
/*执行指定为“以Null终结的字符串”的SQL查询*/
mysql_real_query(mysql, Find_Str, (unsigned int)strlen(Find_Str));
results = mysql_store_result(mysql); //能够访问以前从服务器获得的行
printf(">>>共有%d条信息\n\n", *results);
while((field = mysql_fetch_field(results)))
{
printf("%s\t\t", field->name);
}printf("\n");
while((record = mysql_fetch_row(results))) //能够访问以前从服务器获得的行
{
num_fields = mysql_num_fields(results);
for(i = 0; i < num_fields; i++)
{
printf("%s\t\t", record[i]);
}
printf("\n");
}
printf("\n");
}