C 语言连接数据库

  • Post author:
  • Post category:其他


准备

C 语言想要连接 mysql 数据库的前提当然是要有 mysql 数据库,所以,如果你还没有安装 mysql 数据库的话请移步至

MySQL官网

去下载对应的数据库版本,mysql 是完全免费的一款数据库,所以你不用担心破解的问题。

MySQL数据库的安装教程:

https://jingyan.baidu.com/article/cd4c2979033a17756f6e6047.html

当然除了这个你还需要安装 C 语言编译器,我用的是

MinGW

,你也可以使用 IDE(集成开发环境)。

include 文件

在安装完 MySQL 后你可以到

C:\Program Files\MySQL\MySQL Server 8.0\include

目录下(至于你的目录在哪,我想你应该有能力找到吧~)将所有的文件复制到你的 C 语言工具下的

include

目录中,比如我的是

E:\compile\MinGW\include

编写测试代码

前面的工作已经做的差不多了,是不是很简单呢?下面让我们开始测试一下数据库的链接吧。

/**
* @name: mysql_con.c
* @author: ultravires
**/
#include <stdio.h>
#include <mysql.h>
int main(int argc, char const *argv[])
{
    printf("引入 mysql.h 没有报错\n");
    system("pause");
    return 0;
}

使用工具 编译->链接 发现改程序已不会报错。但是你可能会发现,该段代码虽然引用了 mysql.h ,但实际上并没有对数据库进行任何操作。是的,这只是一段小小的测试代码,来测试你是否正确的将 include 文件导入。

下面,我们来使用 C 语言对 mysql 数据库进行操作。

C 语言操作数据库

我们还是在之前的测试代码的基础上进行修改。

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

#define host "localhost"
//#define port 3306
#define username "username" // 填写你的用户
#define password "password" //填写你的密码
#define database "test"

int main(int argc, char const *argv[])
{
    MYSQL *mysql;
    char *str_sql = "select * from test";
    mysql = mysql_init(NULL);
    if (NULL == mysql)
    {
        printf("init failed\n");
    }
    if (NULL == mysql_real_connect(mysql, host, username, password, database, 3306, NULL, 0))
    {
        printf("connect failed\n");
    }
    if (mysql_real_query(mysql, str_sql, strlen(str_sql)) != 0)
    {
        printf("create failed\n");
    }
    system("pause");
    return 0;
}

如果你也使用的是 MinGW 那么可能会报错,具体报错内容如下:

C:\Users\x5556\Desktop\Temp\mysql_con>gcc -o mysql_con mysql_con.c 
C:\Users\x5556\AppData\Local\Temp\ccj3L2cf.o:mysql_con.c:(.text+0x25): undefined reference to `mysql_init@4'
C:\Users\x5556\AppData\Local\Temp\ccj3L2cf.o:mysql_con.c:(.text+0x80): undefined reference to `mysql_real_connect@32'
C:\Users\x5556\AppData\Local\Temp\ccj3L2cf.o:mysql_con.c:(.text+0xb4): undefined reference to `mysql_real_query@12'
collect2.exe: error: ld returned 1 exit status

至于怎么解决,这里有一博客可以参考,在此我就不抄袭赘述了:

MinGW 连接 MySQL 数据库报错问题

如果你的 MinGW 里面没有 reim 就请移步至:

https://www.cnblogs.com/wunaozai/p/4528394.html

当然,如果你有耐心的话,这文件都可以在你的 MySQL 目录下找到。如果你是在解决不了的话,完全可以下载 visual c++6.0 来进行。



版权声明:本文为x1020915098原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。