C语言编写基于mysql数据库的简单数据管理系统

来源:互联网 发布:华夏免费版服务端源码 编辑:程序博客网 时间:2024/04/29 19:30
系统环境:    Ubuntu 14.04
安装mysql数据库
    sudo apt-get install mysql-server mysql-client
安装mysql开发包SDK
sudo apt-get install libmysqlclient15-dev

功能:
    在终端下, 通过输入不同的数字,进行数据的插入,修改,删除,查询。
在使用前,需要先在mysql中创建一个数据库,数据库中包含一个表table1,其结构为
    name     sex       age      class


删除功能:
    根据输入对应的name,来删除数据库中的相应数据:
void deleteName(MYSQL *mysql, MYSQL *connection){    if(NULL == mysql || NULL == connection)    {        printf("fucn deleteName error: (NULL == mysql || NULL == connection)\n");        return ;        }    char name[1024];    getInput(name, "请输入要删除的名字", sizeof(name));    //整理SQL语句    char SQL[1024];    memset(SQL, 0, sizeof(SQL));    sprintf(SQL, "delete from table1 WHERE name = '%s'", name);    printf("%s\n", SQL);    //执行SQL语句    if(mysql_query(connection, SQL) !=0)    {        printf("query error:%s\n", mysql_error(mysql));        return ;    }}



其中getInput为:
 
int getInput(char *data, char *info, int length){    if(NULL == data || NULL == info)    {            printf("fucn getInput error: (NULL == data || NULL == info)\n");        return -1;    }    char tmp[1024];    memset(tmp, 0, sizeof(tmp));    sprintf(tmp, "%s", info);    //输出提示信息,用此方法可以避免printf的缺点,不用遇到\n或输出缓冲区满了才向屏幕打印信息    write(STDOUT_FILENO, tmp, strlen(tmp));        memset(data, 0, length);    read(STDIN_FILENO, data, length);        //从键盘输入内容    data[strlen(data) - 1] = 0;                //把输入最后一个字符\n替换为整数0,而不是字符'0'    return 0;}



插入功能:
void insertData(MYSQL *mysql, MYSQL *connection){    if(NULL == mysql || NULL == connection)    {        printf("fucn insertData error: (NULL == mysql || NULL == connection)\n");        return ;        }    char SQL[1024];    //输入要插入的名字    char name[1024];    getInput(name, "请输入要插入的名字:", sizeof(name));    //输入要插入的sex    char sex[1024];    getInput(sex, "请输入要插入的性别:", sizeof(sex));        //输入要插入的age    char age[1024];    getInput(age, "请输入要插入的年龄:", sizeof(age));        //输入要插入的sex    char class[1024];    getInput(class, "请输入要插入的班级:", sizeof(class));            memset(SQL, 0, sizeof(SQL));    sprintf(SQL, "INSERT INTO table1 (name, sex, age, class) VALUES ('%s', '%s', %s, '%s')", name, sex, age, class);    printf("%s\n", SQL);    //执行SQL语句    if(mysql_query(connection, SQL) !=0)    {        printf("query error:%s\n", mysql_error(mysql));    }}




修改功能:根据name的值来修改数据
void updateByName(MYSQL *mysql, MYSQL *connection){    if(NULL == mysql || NULL == connection)    {        printf("fucn updateByName error: (NULL == mysql || NULL == connection)\n");        return ;        }    char SQL[1024];    //输入要修改数据项的名字    char name[1024];    getInput(name, "请输入要修改内容所在的名字:", sizeof(name));    //输入要插入的sex    char sex[1024];    getInput(sex, "请输入要修改的性别:", sizeof(sex));        //输入要插入的age    char age[1024];    getInput(age, "请输入要修改的年龄:", sizeof(age));        //输入要插入的sex    char class[1024];    getInput(class, "请输入要修改的班级:", sizeof(class));            memset(SQL, 0, sizeof(SQL));    sprintf(SQL, "UPDATE table1 SET sex = '%s', age = %s, class = '%s' WHERE name = '%s'", sex, age, class, name);    printf("%s\n", SQL);    //执行SQL语句    if(mysql_query(connection, SQL) !=0)    {        printf("query error:%s\n", mysql_error(mysql));    }}



查询功能:输入任意的SELECT语句进行查询
void selectName(MYSQL *mysql, MYSQL *connection){    if(NULL == mysql || NULL == connection)    {        printf("fucn selectName error: (NULL == mysql || NULL == connection)\n");        return ;        }        char SQL[1024];    memset(SQL, 0, sizeof(SQL));    getInput(SQL, "请输入任意SELECT语句>", sizeof(SQL));    printf("%s\n", SQL);    //执行SQL语句    if(mysql_query(connection, SQL) !=0)    {        printf("query error :%s\n", mysql_error(mysql));        return ;    }    //获得查询结果    MYSQL_RES *result = mysql_store_result(connection);    MYSQL_FIELD *field;            //获取字段    int iFieldCount= 0;                //记录有多少字段    while(1)    {        field = mysql_fetch_field(result);        if(field == NULL)            break;        printf("%-15s\t", field->name);        iFieldCount++;    }    printf("\n");    MYSQL_ROW row ;    while(1)        //获得具体的数据    {                row= mysql_fetch_row(result);        if(row ==NULL)            break;        for(int i=0; i< iFieldCount; i++)        {                printf("%-15s\t", (char *)row[i]);        }        printf("\n");    }    mysql_free_result(result);}



主函数:
int main(int arg, char **args){    if(arg < 5)    {        printf("usage: mysql1 host user password database\n");        return -1;    }    MYSQL mysql, *connection;    mysql_init(&mysql);     //初始化client    //连接mysql服务器    connection = mysql_real_connect(&mysql, args[1], args[2], args[3],args[4], 0, 0, 0);    if(connection == NULL)    {        printf("connect error:%s\n", mysql_error(&mysql));        return -1;    }    if(mysql_query(connection, "SET NAMES utf8") !=0)    {        printf("设置字符集错误, %s\n", mysql_error(&mysql));    }    while(1)    {        printf("请输入相应的数字:\n");        printf("0:退出程序\n");        printf("1:插入数据\n");        printf("2:修改数据\n");        printf("3:删除数据\n");        printf("4:查询数据\n");        char input[1024];        read(STDIN_FILENO, input, sizeof(input));        switch(input[0])        {            case '0':                goto End;                break;            case '1':                insertData(&mysql, connection);                break;            case '2':                updateByName(&mysql, connection);                break;            case '3':                deleteName(&mysql, connection);                break;            case '4':                selectName(&mysql, connection);                break;            default:                continue;        }    }  End:    mysql_close(connection);    //关闭连接    printf("close connection\n");    return 0;}



完整源代码以及makefiel文件:

http://download.csdn.net/detail/a572137191/9471143


0 0
原创粉丝点击