失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > linux mysql c语言 api_linux连接MySQL数据库(C语言 API 分析 动态插入修改数据)

linux mysql c语言 api_linux连接MySQL数据库(C语言 API 分析 动态插入修改数据)

时间:2022-04-17 17:13:33

相关推荐

linux mysql c语言 api_linux连接MySQL数据库(C语言 API 分析 动态插入修改数据)

#include

#include

#include

#include

#include

#include

#define DBHOST "localhost"

#define DBUSER "root"

#define DBPASS "***" //输入数据库密码

#define DBPORT 3306

#define DBNAME "test"

#define DBSOCK NULL //"/var/lib/mysql/mysql.sock"

#define DBPCNT 0

MYSQL_RES *result;

MYSQL_ROW row;

MYSQL_FIELD *field;

MYSQL *mysql,*a;

void menu() //显示界面

{

printf("1.返回数据\n");

printf("2.插入数据\n");

printf("3.删除数据\n");

printf("4.退出系统\n");

printf("5.显示主界面\n");

}

void loop(MYSQL *p)

{

int flag=1;

menu();

while(flag)

{

printf("请输入功能标号***\n");

scanf("%d",&flag);

printf("flag=%d\n",flag);

switch(flag){

case 1:{get_data(p);break;}

case 2:{insert(p);printf("insert done!\n");break;}

case 3:{delete(p);printf("delete done!\n");break;}

//case 4:{quit(p);}

case 5:{menu();break;}

default:{break;}

}

if(flag==4)

{

quit();

break;

}

else

continue;

}

}

int insert(MYSQL *p)//向数据库中插入数据

{

init_connect(p);

int no,age;

char name[20];

printf("插入数据 no,name,age请用换行符分隔\n");

scanf("%d\n%s\n%d",&no,name,&age);

char *sqls="insert into children values(%d,'%s',%d)";

char sqlsbuf[500];

sprintf(sqlsbuf,sqls,no,name,age);

if(0!=mysql_real_query(p,sqlsbuf,strlen(sqlsbuf)))

{

printf("insert query failed: %s\n", mysql_error(p));

mysql_close(p);

mysql_library_end();

return 0;

}

return 0;

}

int delete(MYSQL *p)//删除数据库中的一行数据

{

init_connect(p);

char name[20];

printf("删除数据delet one row data,请输入要删除的名字name:\n");

scanf("%s",name);

char *sqls="delete from children where fname='%s'";

char sqlsbuf[500];

sprintf(sqlsbuf,sqls,name);

if(0!=mysql_real_query(p,sqlsbuf,strlen(sqlsbuf)))

{

printf("delete query failed: %s\n", mysql_error(p));

mysql_close(p);

mysql_library_end();

return 0;

}

return 0;

}

int get_data(MYSQL *p)

{

const char *pStatement = "select * from children";

if(0!=mysql_real_query(p,pStatement,strlen(pStatement)))

{

printf("delete query failed: %s\n", mysql_error(p));

mysql_close(p);

mysql_library_end();

return 0;

}

unsigned int num_fields;

unsigned int i;

result = mysql_store_result(p);

if (result == NULL)

{

printf("fetch result failed: %s\n", mysql_error(p));

mysql_close(p);

mysql_library_end();

return 0;

}

num_fields = mysql_num_fields(result);

printf("numbers of result: %d\n", num_fields);

while (NULL != (field = mysql_fetch_field(result)))

{

printf("field name: %s\n", field->name);

}

while (NULL != (row = mysql_fetch_row(result)))

{

unsigned long *lengths;

lengths = mysql_fetch_lengths(result);

for (i = 0; i < num_fields; i++)

{

printf("{%.*s} ", (int) lengths[i], row[i] ? row[i] : "NULL");

}

printf("\n");

}

return 0;

}

int init_connect()

{

mysql=mysql_init(NULL);

mysql_library_init(0, NULL, NULL);

printf("执行数据库初始化\n");

unsigned int timeout = 3000;

mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout);

if (mysql_real_connect(mysql, DBHOST, DBUSER, DBPASS, DBNAME, DBPORT, DBSOCK, DBPCNT) == NULL)

{

printf("connect failed: %s\n", mysql_error(mysql));

mysql_close(mysql);

mysql_library_end();

return 0;

}

printf("connect succssfully\n");

return 0;

}

int quit()

{

mysql_free_result(result);

mysql_close(mysql);

mysql_library_end();

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

}

int main()

{

init_connect();

loop(mysql);

return 0;

}

如果觉得《linux mysql c语言 api_linux连接MySQL数据库(C语言 API 分析 动态插入修改数据)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。