如何使用C与Mysql进行数据交互

本文介绍了在MacOS环境下,使用C语言与MySQL数据库进行数据交互的详细步骤,包括初始化客户端库、建立连接、执行SQL语句、处理结果及关闭连接。通过理解官方手册,学习如何处理返回值,并解决MacOS上的系统链接问题。
摘要由CSDN通过智能技术生成
  • ArthurSlog
  • SLog-2
  • Year·1

  • Guangzhou·China

  • July 8th 2018
    关注微信公众号“环游的球”

想让别人拉你一把,你的手在哪?别想着拉别人一把,否则你也会被拖垮。

开发环境MacOS

Mac自带的编译器,可以直接编译C语言的代码。所以现在,打开你的手机,计时5分钟,编译器了解一下

有点常识 最原始的信息一般都是最有效的信息

如果面向百度或者QQ编程,那趁早转行

在Mysql的官网获取C与Mysql的交互手册Mysql官方手册

  • 下面这段话是智商的分水岭

The MySQL C API is a C-based API that client applications written in C can use to communicate with MySQL Server.Client programs refer to C API header files at compile time and link to a C API library file, libmysqlclient, at link time.

  • 这段话就是实现C与Mysql数据交互的关键 如果你看不懂 说明你想的太多 做的太少

提醒:当你想进步的时候,第一时间打开官方手册

官方文档一般都不会考虑菜鸟们的阅读感受 所以 作为一只��菜鸟 要有点灵性

下面是在MySQL官网找到的一个具体的调用流程:

  • step1 初始化MySQL客户端库,mysql_library_init()。

  • step2 初始化MySQL对象,mysql_init();并连接到服务器, mysql_real_connect()。

  • step3 发出SQL语句并处理其结果,mysql_eqery()。

  • step4 关闭与MySQL服务器的连接,mysql_close()。

  • step5 结束使用MySQL客户端库,mysql_library_end()。

下面main.c是完整的C代码(1分钟浏览一下), 关键是上面提到的五个步骤,函数的用法参考Mysql官方手册

main.c

#include <stdio.h>
#include <mysql.h>
#include <stdlib.h>

MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
const char host_name[] = "localhost";
const char user_name[] = "root";
const char password[] = "888888";
const char db_name[] = "my_db";
unsigned int port_num = 0;
unsigned long CLIENT_MULTI_STATMENTS = 0;

int main(void)
{
    /* step1 int mysql_library_init(int argc, char **argv, char **groups) */
    if (mysql_library_init(0, NULL, NULL))
    {
        fprintf(stderr, "could not initialize MySQL client library\n");
        exit(1);
    }

    /* step2 MYSQL *mysql_init(MYSQL *mysql) */
    mysql_init(&mysql);

    /* step2 MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) */
    if (mysql_real_connect(&mysql, host_name, user_name, password,
                           db_name, port_num, NULL, CLIENT_MULTI_STATEMENTS) == NULL)
    {
        printf("mysql_real_connect() failed\n");
        fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql));
        mysql_close(&mysql);
        exit(1);
    }

    /* step3 int mysql_query(MYSQL *mysql, const char *stmt_str) */
    int status = mysql_query(&mysql, "SELECT * FROM Account"); /* int mysql_query(MYSQL *mysql, const char *stmt_str) */

    <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值