deepinlinux用C语言存取mysql数据库和同时编译2个c文件

9 篇文章 0 订阅

首先安装开发库

sudo apt-get install libmysqlclient-dev,提示不存在

后来用 sudo apt install default-libmysqlclient-dev

发现安装了mariadb的库,也行,免费的减少商业纠纷

然后搜了一段代码,能够链接数据库,更新表格数据

#include "db.h"
MYSQL* dblink;
int init()
{
    dblink = mysql_init(NULL);
    if (dblink != NULL)
    {
        perror("mysql_init");
    }
    else
    {
        printf("mysql初始化失败\n");
        return 1;
    }
    //mysql连接
    const char* host = "192.168.64.235";
    const char* user = "root";
    const char* pwd = "123456";
    const char* db_name = "tvm";
    dblink = mysql_real_connect(dblink, host, user, pwd, db_name, 0, NULL, 0);
    if (dblink != NULL)
    {
        printf("mysql_connect %s ok\n", db_name);
    }
    else
    {
        printf("mysql连接失败 %s\n", mysql_error(dblink));
        return 2;
    }
    return 0;
}
void user_set_value(int cv)
{
    char buf[100];
    sprintf(buf, "UPDATE sys_codetable SET cvalue='%d' WHERE ckey='prevalidion_event_code';", cv);
    mysql_query(dblink, buf);
}
int main()
{
    printf("hello world, Harmony is coming!\n");
    init();
    user_get_all(dblink);
    user_set_value(4);
    user_get_all(dblink);
    mysql_close(dblink);
    return 0;
}

顺便验证下将函数提取到另一个文件db.c,避免主文件过大

#include "db.h"
void user_get_all(MYSQL* dblink)
{
    MYSQL_RES* result;
    MYSQL_ROW row;
    char buf[100];
    sprintf(buf, "SELECT ckey,cvalue from sys_codetable where ckey='prevalidion_event_code';");
    mysql_query(dblink, buf);
    result = mysql_store_result(dblink);
    if (result == NULL)
    {
        //结果为空
        mysql_free_result(result);
        printf("null\n");
        return;
    }
    int r = mysql_num_rows(result);
    int c = mysql_num_fields(result);
    printf("rows=%d fields=%d\n", r, c);
    for (int i = 0; i < r; ++i)
    {
        row = mysql_fetch_row(result);
        for (int j = 0; j < c; ++j)
        {
            if (row[j] == NULL) printf("null ");
            else printf("%s ", row[j]);
        }
        printf("\n");
    }
    mysql_free_result(result);
}

提取出来的文件需要一个头文件db.h

#include <mysql/mysql.h>
#include <stdio.h>
#ifndef DB_H
#define DB_H
void user_get_all(MYSQL* dblink);
#endif

将提取函数的文件放在编译命令里,mariadb库也需要放编译命令里,顺利编译成功

/usr/bin/g++ -fdiagnostics-color=always -g /home/qzc/hellc/hello.c /home/qzc/hellc/db.c -o /home/qzc/hellc/hello -lmariadb

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值