c 调用mysql.exe_C语言调用mysql数据库API实现简单的mysql客户端的功能

输入可执行程序的名字和数据库的名字进入该程序,比如 ./mysql_test3 ch11

(ch11是数据库的名字)

下面是输入命令的输出结果:

mysql_init ok...

mysql_real_connect ok...

mysql> show tables;

-------------------------------------------------------------

Tables_in_ch11

---------------------------------------------------------------

food

medicine

product

t

t1

t2

teacher

mysql> create table tttttt(id int, name varchar(20));

create ok

mysql> show tables;

-------------------------------------------------------------

Tables_in_ch11

---------------------------------------------------------------

food

medicine

product

t

t1

t2

teacher

tttttt

mysql> desc tttttt;

-------------------------------------------------------------

Field Type Null Key Default Extra

---------------------------------------------------------------

id int(11) YES (null)

name varchar(20) YES (null)

mysql> insert into tttttt values(1, "linux_ever");

mysql> select * from tttttt;

-------------------------------------------------------------

id name

---------------------------------------------------------------

1 linux_ever

mysql> drop table tttttt;

drop ok

mysql> show tables;

-------------------------------------------------------------

Tables_in_ch11

---------------------------------------------------------------

food

medicine

product

t

t1

t2

teacher

mysql> quit

mysql_close...

上面的命令有:show, create, desc, insert, select, drop, quit

show tables;

create table tttttt(id int, name varchar(20));

desc tttttt;

insert into tttttt values(1, "linux_ever");

select * from tttttt;

drop table tttttt;

quit;

程序的源代码参考博客:http://blog.csdn.net/linux_ever/article/details/50651513

调用的主要mysql数据库的API函数:

mysql_init(&mysql);

mysql_errno(&mysql);

mysql_real_connect(connect, "localhost", "root", "yxk", database_name, 0, NULL, 0);

mysql_query(&mysql, "set names utf8");

mysql_query(connect, query);

mysql_store_result(&mysql);

mysql_field_count(&mysql);//获得表的列数

mysql_fetch_fields(result);//查询表头

mysql_fetch_row(result);//查询表内容

mysql_free_result(result);//释放内存

mysql_close(connect);//关闭连接

源代码:

/*************************************************************************

> File Name:mysql_test.c

> Author:

> Mail:

> Created Time: 2016年02月11日 星期四 10时45分31秒

************************************************************************/

#include

#include

#include

#include

char database_name[1024];

char query[1024];

int main(int argc, char *argv[])

{

if(argc <= 1){

printf("input: %s database_name\n", argv[0]);

return -1;

}

strcpy(database_name, argv[1]);

int ret = 0;

MYSQL mysql;

MYSQL * connect = NULL;

connect = mysql_init(&mysql);

if(connect == NULL){

ret = mysql_errno(&mysql);

printf("mysql_init error, %s\n", mysql_error(&mysql));

return ret;

}

printf("mysql_init ok...\n");

connect = mysql_real_connect(connect, "localhost", "root", "yxk", database_name, 0, NULL, 0);

if(connect == NULL){

ret = mysql_errno(&mysql);

printf("mysql_real_connect error, err is: %s\n", mysql_error(&mysql));

return ret;

}

printf("mysql_real_connect ok...\n");

char * pch = NULL;

while(1){

memset(query, 0, sizeof(query));

printf("mysql> ");

gets(query);

pch = strchr(query, ';');//将最后的分号;换为\0

if(pch != NULL){

*pch = '\0';

}

if(strcmp("quit", query) == 0){//如果输入的是quit则退出程序

break;

}

//设置查询字符集属性为utf8

ret = mysql_query(&mysql, "set names utf8");

if(ret != 0){

printf("mysql_query error\n");

return ret;

}

//执行下面的命令, select, show, desc

if((strncmp(query, "select", 6) == 0) || (strncmp(query, "SELECT", 6) == 0) ||

(strncmp(query, "show", 4) == 0)|| (strncmp(query, "SHOW", 4) == 0) ||

(strncmp(query, "desc", 4) == 0)|| (strncmp(query, "DESC", 4) == 0)){

//查询数据

ret = mysql_query(connect, query);

if(ret != 0){

printf("mysql_query error\n");

//return ret;

continue;

}

MYSQL_RES *result = mysql_store_result(&mysql);

if(result == NULL){

printf("mysql_store_result error\n");

return -1;

}

int field_num = mysql_field_count(&mysql);

//查询表头

MYSQL_FIELD * fields = mysql_fetch_fields(result);

int i = 0;

printf("-------------------------------------------------------------\n");

for(i= 0; i < field_num; i++){

printf("%s \t", fields[i].name);

}

printf("\n---------------------------------------------------------------\n");

//查询表内容

MYSQL_ROW row = NULL;

while(row = mysql_fetch_row(result)){

for(i= 0; i < field_num; i++){

printf("%s \t", row[i]);

}

printf("\n");

}

mysql_free_result(result);//释放内存

}

else {//执行drop, create, insert等命令

ret = mysql_query(connect, query);

if(ret != 0){

printf("mysql_query error\n");

//return ret;

continue;

}

if(strncmp(query, "drop", 4)==0 || strncmp(query, "DROP", 4)==0){

printf("drop ok\n");

}

else if(strncmp(query, "create", 6)==0 || strncmp(query, "CREATE", 6)==0){

printf("create ok\n");

}

else if(strncmp(query, "insert", 6)==0 || strncmp(query, "INSERT", 6)==0){

printf("insert ok\n");

}

}

}

mysql_close(connect);

printf("mysql_close...\n");

return ret;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值