Home > Database > Mysql Tutorial > (一个代码学会c语言操作数据库)linux上通过c语言操作数据库实

(一个代码学会c语言操作数据库)linux上通过c语言操作数据库实

WBOY
Release: 2016-06-07 16:10:40
Original
1474 people have browsed it

只要把下面的例子理解了,那么通过C API操作数据库就没啥难的了 #include stdio.h#include mysql.h#include string.h#include stdlib.hMYSQL mysql; //mysql连接MYSQL_RES *res; //这个结构代表返回行的一个查询结果集MYSQL_ROW row; //一个行数据的类型安全

只要把下面的例子理解了,那么通过C API操作数据库就没啥难的了

#include <stdio.h>
#include <mysql.h>
#include <string.h>
#include <stdlib.h>
MYSQL mysql; //mysql连接
MYSQL_RES *res; //这个结构代表返回行的一个查询结果集
MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示
char query[100]; //查询语句
char order[100];
void STRINSERT(int count)
{
char *delim="_";
char *p;
char *q;
char temp[20];
scanf("%s",temp);
strcpy(order,strtok(query,delim));
strcat(order,temp);
int i=1;
while((p=strtok(NULL,delim)))
{
strcat(order,p);
if(i<count)
{
scanf("%s",temp);
i++;
}
else
{
break;
}
strcat(order,temp);
}
strcpy(query,order);
}


void show()
{
int t,r;
strcpy(query," select * from qq");
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));//执行指定为计数字符串的SQL查询。
if(t)
{
printf("执行显示时出现异常: %s",mysql_error(&mysql));
}
res=mysql_store_result(&mysql);//检索完整的结果集至客户端。
printf("姓名\t学号\t年龄\t\n");
while(row=mysql_fetch_row(res))
{


for(t=0;t<mysql_num_fields(res);t++)
{
printf("%s\t" ,row[t]);
}
printf("\n");


}
mysql_free_result(res);//释放结果集使用的内存。
}
void insert()
{
int t,r;
printf("请输入姓名、学号、年龄\n");//安一次回车为输入一项
strcpy(query,"insert into qq(sname,sno,sage) values(&#39;_&#39;,&#39;_&#39;,_)");
STRINSERT(3);//转化为命令函数
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
if(t)
{
printf("执行插入时出现异常: %s",mysql_error(&mysql));
}
else
{
printf("添加成功\n");
}
}
void delete()
{
int t,r;
printf("请输入你要删除学生的学号:\n");
strcpy(query,"delete from qq where sno=&#39;_&#39;");
STRINSERT(1);
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
if(t)
{
printf("执行删除时出现异常: %s",mysql_error(&mysql));
}
}
void search()
{
int t,r;
printf("请输入你要查找学生的信息:\n");
strcpy(query,"select * from qq where sno=&#39;_&#39;");
STRINSERT(1);
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));//执行指定为计数字符串的SQL查询。
if(t)
{
printf("执行查询时出现异常: %s",mysql_error(&mysql));
}
res=mysql_store_result(&mysql);//检索完整的结果集至客户端。
printf("姓名\t学号\t年龄\t\n");
while(row=mysql_fetch_row(res))
{


for(t=0;t<mysql_num_fields(res);t++)
{
printf("%s\t" ,row[t]);
}
printf("\n");


}
mysql_free_result(res);//释放结果集使用的内存。
}
void updata()
{
int t,r;
printf("请输入新的学号和你要修改学生的学号:\n");
strcpy(query,"update qq set sno=&#39;_&#39; where sno=&#39;_&#39;");
STRINSERT(2);
t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));
if(t)
{
printf("执行更新时出现异常: %s",mysql_error(&mysql));
}
else
{
printf("修改成功\n");
}
}
void menu()
{
printf("\t\t1、显示学生信息\n");
printf("\t\t2、添加学生信息\n");
printf("\t\t3、删除学生信息\n");
printf("\t\t4、查找学生信息\n");
printf("\t\t5、修改学生信息\n");
printf("\t\t0、退出系统 \n");


}
void quit()
{
mysql_close(&mysql);
printf("数据库已关闭 \n");
exit(1);
}
int main()
{
mysql_init(&mysql);
if (!mysql_real_connect(&mysql,"localhost", "root", NULL, "test",0,NULL,0))
{


printf( "Error connecting to database: %s",mysql_error(&mysql));


}
else
{
printf("Connected...\n");
}
int choice;
while(1)
{
menu();
printf("\n\t请选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:show();break;
case 2:insert();break;
case 3:delete();break;
case 4:search();break;
case 5:updata();break;
case 0:quit();
}
}
return 0;
}
Copy after login

运行结果如下:

\

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template