目录:
1. MySQL数据库查找数据
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
if(argc!=2)
{
printf("error args\n");
return -1;
}
//
MYSQL *conn;
//保存查询结果结构体指针
MYSQL_RES *res;
//行
MYSQL_ROW row;
//连接,localhost本地数据库
char* server="localhost";
//mysql用户名
char* user="root";
//mysql密码
char* password="123";
//要访问的数据库名称
char* database="mybase";
//sql语句-查询
char query[300]="select * from person where name='";
//query, argv[1],"'" 拼接到query里,这样就是完全的sql语句(可执行)
//内容就是“ select * from person where name='传参(名字)' ”
sprintf(query,"%s%s%s",query, argv[1],"'");
/* strcpy(query,"select * from Person"); */
//打印一下验证有无错误
puts(query);
unsigned int t,r;
//初始化,mysql提供的接口
conn=mysql_init(NULL);
//mysql_real_connect连接数据库
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
//mysql_error,mysql提供的接口,返回字符串,错误信息
printf("Error connecting to database:%s\n",mysql_error(conn));
return -1;
}else{
printf("Connected...\n");
}
//把query的语句通过conn传给数据库,返回int型 结果 t,判断是否成功
t=mysql_query(conn,query);
if(t)
{
printf("Error making query:%s\n",mysql_error(conn));
}else{
//第一种方式,判断语句是否成功
//只能代表语句可以执行,不代表数据查询成功
//用mysql_num_rows可以得到查询的结果集有几行
//要配合mysql_store_result使用
//res保存结果集
//res = mysql_store_result(conn);
//printf("mysql_num_rows=%ld\n",mysql_num_rows(res));
//第二种方式,不保存,去数据库取
res=mysql_use_result(conn);
//结果集里取一行出来保存在row结构体里
row = mysql_fetch_row(res);
if(row == NULL)
{
printf("Didn't find data\n");
}
else
{
do{
//printf("num=%d\n",mysql_num_fields(res));//打印结果的列数
//打印数据,for循环不知道几列
//直到读取完
for(t=0;t<mysql_num_fields(res);t++)
{
printf("%8s ",row[t]);
}
printf("\n");
}while((row=mysql_fetch_row(res))!=NULL);
}
//释放资源
mysql_free_result(res);
}
mysql_close(conn);
return 0;
}
运行,输入参数
./query_mysql ironman
打印结果
select * from person where name=‘ironman’
Connected…
1 ironman 100 1000 (null)
相当于mysql内输入
select * from person where name='ironman';
2. MySQL数据库删除数据
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char* server="localhost";
char* user="root";
char* password="123";
char* database="mybase";
char query[200]="delete from Person where name='thor'";
int t,r;
conn=mysql_init(NULL);
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
printf("Error connecting to database:%s\n",mysql_error(conn));
}else{
printf("Connected...\n");
}
t=mysql_query(conn,query);
if(t)
{
printf("Error making query:%s\n",mysql_error(conn));
}else{
//mysql_affected_rows 打印删除的结果有几行
printf("delete success,delete row=%ld\n",(long)mysql_affected_rows(conn));
}
mysql_close(conn);
return 0;
}
运行
打印结果
Connected…
delete success,delete row=1
在数据库中查询,删除成功
相当于mysql内输入
delete from Person where name='thor';
3. MySQL数据库插入数据
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char* server="localhost";
char* user="root";
char* password="123";
char* database="mybase";
char query[200]="insert into person(ID,name,score,attribute,IQ) values('5','thor',59,1999,99)";
int t,r;
conn=mysql_init(NULL);
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
printf("Error connecting to database:%s\n",mysql_error(conn));
}else{
printf("Connected...\n");
}
t=mysql_query(conn,query);
if(t)
{
printf("Error making query:%s\n",mysql_error(conn));
}else{
printf("insert success\n");
}
mysql_close(conn);
return 0;
}
运行
打印结果
Connected…
insert success
在数据库中查询,插入成功
相当于mysql内输入
insert into person(ID,name,score,attribute,IQ) values('5','thor',59,1999,99);
4. MySQL数据库修改数据
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
int main(int argc,char* argv[])
{
if(argc!=2)
{
printf("error args\n");
return -1;
}
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char* server="localhost";
char* user="root";
char* password="123";
char* database="mybase";
char query[200]="update person set name='";
sprintf(query,"%s%s%s",query,argv[1],"' where ID=5");
puts(query);
int t,r;
conn=mysql_init(NULL);
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
printf("Error connecting to database:%s\n",mysql_error(conn));
}else{
printf("Connected...\n");
}
t=mysql_query(conn,query);
if(t)
{
printf("Error making query:%s\n",mysql_error(conn));
}else{
printf("update success\n");
}
mysql_close(conn);
return 0;
}
运行,输入参数
./update_mysql starload
打印结果
update person set name=‘starload’ where ID=5
Connected…
update success
在数据库中查询,修改成功
相当于mysql内输入
update person set name='starload' where ID=5;