313282
315978名用户注册
首页 > 技术资讯
Mysql数据库C语言链接案例
2016-06-09 05:41:43       浏览量:10353       来源:管理员


/*

注意:编译的时候使用 -lmysqlclient选项,即链接mysqlclient库。如果库没有找到,需要安装。

安装mysql

1. sudo apt-get install mysql-server

2. sudo apt-get install mysql-client

3. sudo apt-get install libmysqlclient-dev


上海怡胜 

IT技术交流QQ群:378333774

www.ysitroad.net

本程序要求

   1.mysql安装

   2.创建数据库yisheng_data

   3.创建表 stus

+------+--------+------+

| id   | name   | age  |

+------+--------+------+

|    1 | yisheng|   10 |

+------+--------+------+

   4. mysql 登录的用户和密码 跟程序中的一致。可修改程序中的全局变量 mysql_user mysql_password。

*/

#include <mysql/mysql.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>



MYSQL *mysql_conn = NULL;

char mysql_server[]     = "localhost";//mysql 数据库主机

char mysql_user[]       = "root";//mysql 管理登录用户

char mysql_password[]   = "123456";//mysql 管理登录密码

char mysql_database[]   = "yisheng_data";//使用的数据库。


struct stu

{

int num;

char name[32];

int age;

};


//链接数据库

MYSQL * mysql_get_conn()

{


    if(mysql_conn != NULL)

        return mysql_conn;


    //初始化,创建数据操作符

    mysql_conn = mysql_init(NULL);


    //链接数据库

    if (!mysql_real_connect

       (mysql_conn, mysql_server, mysql_user, mysql_password,             mysql_database, 0, NULL, 0)) {

        fprintf(stderr, "%s\n", mysql_error(mysql_conn));

        return NULL;

        }


    return mysql_conn;

}


//执行sql语句,sqlcmd:参数为具体的指令

int  mysql_go(char *sqlcmd,MYSQL_RES **pres)

{


    MYSQL *conn;

    MYSQL_RES *res;

    conn = mysql_get_conn();


    //执行 指定数据库

    if (mysql_query(conn, sqlcmd)) {

        fprintf(stderr, "%s\n", mysql_error(conn));

        return -1;

        }

    //获取 sql语句执行的结果

    res = mysql_use_result(conn);


    if(pres != NULL)

        *pres = res;

    return 0;

}


//添加功能

int stu_add()

{

    struct stu s;

    char sql_cmd[1024];


    printf("Please input stu(num name):\n");


    scanf("%d %s %d",&s.num,s.name,&s.age);


    sprintf(sql_cmd,"insert into stus     values(%d,'%s',%d)",s.num,s.name,s.age);

    printf("%s\n",sql_cmd);

    mysql_go(sql_cmd,NULL);

    return 0;

}


//删除功能

int stu_del()

{

    struct stu s;

    char sql_cmd[1024];


    printf("Please input id of stu that you want delete:\n");


    scanf("%d",&s.num);


    sprintf(sql_cmd,"delete from stus where id=%d",s.num);

    printf("%s\n",sql_cmd);

    mysql_go(sql_cmd,NULL);

    return 0;

}


//查询功能

void stu_show()

{

    struct stu s;

    MYSQL_RES *res;

    MYSQL_ROW row;

    int fnum = 0,i;

    char sql_cmd[1024];



    sprintf(sql_cmd,"select * from stus");

    mysql_go(sql_cmd,&res);


    fnum = mysql_num_fields(res);//返回值为列数。


    //一行一行的获取数据,依次向后

    while ((row = mysql_fetch_row(res)) != NULL) {

        s.num = atoi(row[0]);

        strcpy(s.name,row[1]);

        s.age = atoi(row[2]);


        printf("stu:%d %s %d\n",s.num,s.name,s.age);

    }



    mysql_free_result(res);


}



/*主函数*/

int main()

{

    MYSQL *conn;

    MYSQL_RES *res;

    MYSQL_ROW row;

    int fnum = 0,sel;

    int ret;

    int flag = 1;


    ret = mysql_go("use yisheng_data",NULL);

    if(ret == -1)

    {

        printf("use data ret error\n");

    }


    while(flag)

    {

        printf("1.add stu.\n");

        printf("2.show stu.\n");

        printf("3.delete stu\n");

        printf("4.exit.\n");


        printf("Please input selct num:\n");

        scanf("%d",&sel);


        switch(sel)

        {

            case 1:

                stu_add();

                break;

            case 2:

                stu_show();

                break;

            case 3:

                stu_del();

                break;

            case 4:

                flag = 0;

                break;

        }

    }

    //关闭描述符

    mysql_close(mysql_get_conn());


    printf("finish! \n");

    return 0;

}


推荐课程

1请描述您遇到的问题或您的意见、建议

2请留下联系方式,您将有机会获得精美奖品

[可选]