一个简单用c和mysql的示范程序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
#include <signal.h>

#define  error(x) printf("ERROR %d: %s\n", mysql_errno(x), mysql_error(x))
#define SQL_LEN 256

/*
 * create table BEAL(
 * NAME CHAR(8) NOT NULL,
 * MONEY INTEGER NOT NULL,
 * DATE DATE NOT NULL,
 * TIME TIME NOT NULL
 * )
 */



MYSQL mysql;

void DEAL();
void insert(MYSQL *mysql);
void delete(MYSQL *mysql);
void show_user(MYSQL *mysql);
void show(MYSQL *mysql, char *name);
void help();
void bye();

void help()
{
        printf("\n------------------------------------------\n");
        printf("输入 0    : 显示用户\n");
        printf("输入 1    : 显示数据\n");
        printf("输入 2    : 插入数据\n");
        printf("输入 3    : 删除数据\n");
        printf("输入用户名: 显示该用户的数据\n");
        printf("Ctrl + C  : 退出\n");
        printf("------------------------------------------\n");

}

void bye()
{
        mysql_close(&mysql);
        printf("\nbye!\n");
        exit(0);
}

void insert(MYSQL *mysql)
{
        char sql[SQL_LEN];
        char name[8];
        float money;

        printf("插入格式: lulu 100\n");
        scanf("%s%f", name, &money);
        memset(sql, 0, SQL_LEN);
        sprintf(sql, "insert into DEAL values('%s', %f, curdate(), curtime())", name, money);
        printf("插入数据 [%s]\n", sql);

        if(mysql_real_query(mysql, sql, strlen(sql)))
        {
                error(mysql);
                return;
        }
}

void delete(MYSQL *mysql)
{
        char sql[SQL_LEN];
        char name[8];
        char date[16];
        char time[16];

        printf("删除格式: lulu 2012-11-06 09:45:10\n");
        scanf("%s%s%s", name, date, time);
        memset(sql, 0, SQL_LEN);
        sprintf(sql, "delete from DEAL where NAME = '%s' AND DATE = '%s' AND TIME = '%s'", name, date, time);

        printf("删除数据 [%s]\n", sql);

        if(mysql_real_query(mysql, sql, strlen(sql)))
        {
                error(mysql);
                return;
        }
}

void show(MYSQL *mysql, char *name)
{
        MYSQL_RES *res;
        MYSQL_ROW row;
        char sql[SQL_LEN];
        memset(sql, 0, SQL_LEN);
        if(name == NULL)
                sprintf(sql, "select * from DEAL");
        else
                sprintf(sql, "select * from DEAL where NAME = '%s'", name);
        printf("显示数据 [%s]\n", sql);

        if(mysql_real_query(mysql, sql, strlen(sql)))
        {
                error(mysql);
                return;
        }

        res = mysql_store_result(mysql);
        printf("+----------+------------+--------------+------------+\n");
        printf("|  %8s  |   %8s   |    %8s    |   %8s   |\n",  "用户", "金额", "日期", "时间");
        printf("+----------+------------+--------------+------------+\n");
        float sum = 0;
        while ((row = mysql_fetch_row(res)))
        {
                printf("|");
                int i;
                int num = mysql_num_fields(res);
                for(i = 0; i < num; i++)
                {
                        if(i == 1)
                                sum += atof(row[i]);
                        printf("%8s  |  ", row[i]);
                }
                printf("\n");
        }
        printf("+----------+------------+--------------+------------+\n");
        printf("%s 总金额: %.2f\n\n", (name == NULL ? "" : name), sum);
        mysql_free_result(res);
}

void show_user(MYSQL *mysql)
{
        MYSQL_RES *res;
        MYSQL_ROW row;
        char sql[SQL_LEN];
        memset(sql, 0, SQL_LEN);
                sprintf(sql, "select NAME from DEAL GROUP BY NAME");
        printf("显示数据 [%s]\n", sql);

        if(mysql_real_query(mysql, sql, strlen(sql)))
        {
                error(mysql);
                return;
        }

        res = mysql_store_result(mysql);
        printf("+----------+\n");
        printf("|  %8s  |\n",  "用户");
        printf("+----------+\n");
        float sum = 0;
        while ((row = mysql_fetch_row(res)))
        {
                printf("|");
                int i;
                int num = mysql_num_fields(res);
                for(i = 0; i < num; i++)
                {
                        if(i == 1)
                                sum += atof(row[i]);
                        printf("%8s  |  ", row[i]);
                }
                printf("\n");
        }
        printf("+----------+\n");
        mysql_free_result(res);
}

void DEAL()
{
        mysql_init(&mysql);
        if(!mysql_real_connect(&mysql, 
                                "localhost", "coolulu", "猜猜看", "BANK", 0, NULL, 0))
                error(&mysql);
        else
                printf("success connect...\n");
        help();
        char name[8];

        while(1)
        {
                printf("$ 输入数字或用户名:");
                scanf("%s", name);

                switch(name[0])
                {
                case '0':
                        show_user(&mysql);break;
                case '1':
                        show(&mysql, NULL);break;
                case '2':
                        insert(&mysql);break;
                case '3':
                        delete(&mysql);break;
                default:
                        show(&mysql, name);
                }

                memset(name, 0, strlen(name));
        }
}

int main()
{
        signal(SIGINT, bye);
        DEAL();
        return 0;
}


数据库叫 BANK

表 DEAL

  1. /*
  2.  * create table BEAL( 
  3.  * NAME CHAR(8) NOT NULL, 
  4.  * MONEY INTEGER NOT NULL, 
  5.  * DATE DATE NOT NULL, 
  6.  * TIME TIME NOT NULL 
  7.  * ) 
  8.  */ 


coolulu@ubuntu:~/code/mysql/BANK$ cat makefile
deal:
        gcc -o deal deal.c `mysql_config --cflags --libs`
clean:
        rm deal


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我不太擅长用C语言写程序,但我可以给你一些参考资料,希望能帮助你。你可以在MySQL官网上查找有关如何使用C语言编写增、删、改、查程序的教程。另外,你还可以在网上搜索关于C语言编写MySQL程序的例子,以及如何使用C语言编写MySQL程序的文章。 ### 回答2: 要使用C语言编写MySQL的增、删、改、查程序,首先需要安装MySQL C连接器。然后,可以按照以下步骤进行编程: 1. 引入C语言的mysql头文件:`#include <mysql.h>` 2. 连接MySQL数据库: ```c MYSQL mysql; mysql_init(&mysql); mysql_real_connect(&mysql, "localhost", "username", "password", "database_name", 0, NULL, 0); ``` 其中,`localhost`是数据库所在的主机名,`username`和`password`是数据库的登录名和密码,`database_name`是要连接的数据库名称。 3. 实现增加数据的功能: ```c char query[1000]; sprintf(query, "INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')"); mysql_query(&mysql, query); ``` 其中,`table_name`是要插入数据的表名,`column1`和`column2`是要插入数据的列名,`value1`和`value2`是相应的值。 4. 实现删除数据的功能: ```c char query[1000]; sprintf(query, "DELETE FROM table_name WHERE condition"); mysql_query(&mysql, query); ``` 其中,`table_name`是要删除数据的表名,`condition`是删除数据的条件。 5. 实现修改数据的功能: ```c char query[1000]; sprintf(query, "UPDATE table_name SET column1 = 'new_value' WHERE condition"); mysql_query(&mysql, query); ``` 其中,`table_name`是要修改数据的表名,`column1`是要修改的列名,`new_value`是要设置的新值,`condition`是修改数据的条件。 6. 实现查询数据的功能: ```c char query[1000]; sprintf(query, "SELECT column1, column2 FROM table_name WHERE condition"); mysql_query(&mysql, query); MYSQL_RES* result = mysql_store_result(&mysql); MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { printf("%s %s\n", row[0], row[1]); // 根据实际情况打印查询结果 } mysql_free_result(result); ``` 其中,`table_name`是要查询数据的表名,`column1`和`column2`是要查询的列名,`condition`是查询数据的条件。 7. 关闭MySQL连接: ```c mysql_close(&mysql); ``` 以上是一个简单的使用C语言编写MySQL的增、删、改、查程序的方法,根据具体需求和数据库结构,还可以进行更复杂的操作和功能实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值