当前位置:首页 > 行业动态 > 正文

c语言怎么跟数据库相连

在C语言中,与数据库的连接通常通过使用数据库API或者ODBC(开放数据库连接)来实现,这里以MySQL为例,介绍如何在C语言中连接到MySQL数据库。

1、安装MySQL Connector/C库

你需要在你的计算机上安装MySQL Connector/C库,这是一个用于连接MySQL数据库的C语言库,你可以从MySQL官方网站下载并安装:https://dev.mysql.com/downloads/connector/c/

2、包含头文件

在你的C语言程序中,需要包含以下头文件:

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

3、编写代码

接下来,编写一个C语言程序来连接到MySQL数据库,以下是一个简单的示例:

#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    // 初始化MySQL连接结构体
    conn = mysql_init(NULL);
    if (conn == NULL) {
        fprintf(stderr, "Error: %s
", mysql_error(conn));
        exit(1);
    }
    // 连接到MySQL服务器
    if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL) {
        fprintf(stderr, "Error: %s
", mysql_error(conn));
        mysql_close(conn);
        exit(1);
    }
    // 执行查询语句
    if (mysql_query(conn, "SELECT * FROM table_name")) {
        fprintf(stderr, "Error: %s
", mysql_error(conn));
        mysql_close(conn);
        exit(1);
    }
    // 获取查询结果集
    res = mysql_use_result(conn);
    if (res == NULL) {
        fprintf(stderr, "Error: %s
", mysql_error(conn));
        mysql_close(conn);
        exit(1);
    }
    // 输出查询结果
    while ((row = mysql_fetch_row(res)) != NULL) {
        printf("%st%st%s
", row[0], row[1], row[2]);
    }
    // 释放结果集和关闭连接
    mysql_free_result(res);
    mysql_close(conn);
    return 0;
}

在这个示例中,我们首先包含了mysql.h头文件,然后初始化了一个MYSQL结构体指针conn,接着,我们使用mysql_real_connect()函数连接到MySQL服务器,在这个函数中,我们需要提供服务器地址、用户名、密码、数据库名等参数,如果连接成功,我们可以使用mysql_query()函数执行SQL查询语句,查询结果可以通过mysql_use_result()函数获取,然后使用mysql_fetch_row()函数逐行遍历结果集,我们释放结果集并关闭连接。

注意:在实际使用中,你需要将示例代码中的"localhost"、"username"、"password"和"database"替换为你的MySQL服务器地址、用户名、密码和数据库名,将"SELECT * FROM table_name"替换为你要执行的SQL查询语句,你还需要将"table_name"替换为你要查询的表名。

4、编译和运行代码

现在,你可以使用C编译器(如GCC)编译并运行你的C语言程序,如果你的程序名为main.c,则可以使用以下命令编译并运行:

gcc main.c o main lmysqlclient lpthread lz lm ldl I /usr/include/mysql L /usr/lib64/mysql Wl,rpath,/usr/lib64/mysql DUNIX_SOCKET=/tmp/mysql.sock DMYSQL_USER=username DMYSQL_PWD=password DMYSQL_DB=database DMYSQL_PORT=3306 DDEFAULT_CHARSET=utf8mb4 DDEFAULT_COLLATION=utf8mb4_general_ci DWITH_SSL=system DWITH_ZLIB=system DWITH_MARIADB=0 DWITH_EMBEDDED_SERVER=OFF DENABLED_LOCAL_INFILE=1 DENABLED_PROFILING=0 DENABLED_DEBUG_SYNC=0 DENABLED_DEBUG_TRACE=0 DENABLED_DEBUG_UNUSED=0 DENABLED_STATISTICS=0 DENABLED_STMT_SCANNER=0 DENABLED_DATABASE_ROTATION=0 DENABLED_GEOMETRY=0 DENABLED_AUTOMATIC_INITIALIZATION=0 DENABLED_EVENTS=0 DENABLED_GROUP_REPLICATION=0 DENABLED_LOCAL_INFILE=1 DENABLED_MEMORY_TABLE=0 DENABLED_NETWORKING=0 DENABLED_OUTFILE=0 DENABLED_OTHER=0 DENABLED_PARTITIONING=0 DENABLED_REPLICATION=0 DENABLED_ROWENUMATION=0 DENABLED_STRUCTUREDSTORAGE=0 DHAVE__CONFIG__H sysroot=/usr/local/Cellar/gcc/9.3.0/lib/gcc/9/gcc/config build=i386appledarwin15 host=i386appledarwin15 target=i386appledarwin15 programtransformname='s/x86_64appledarwin15/i386appledarwin15/' programtransformfile='../resource/program_transform_file.1' g O2 c main.c o main.o && LDFLAGS="L/usr/local/opt/openssl@1.1/lib" ./main.o lssl lcrypto lz lm ldl /usr/local/Cellar/gcc/9.3.0/lib/gcc/9/gcc/../../../libexec/gcc/i386appledarwin15/9.3.0/ld: warning: in /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/crtendinfo.h, line 277: missing binary directory: '/usr/local/opt/openssl@1.1/lib' collect2: error: ld returned 1 exit status make: *** [main] Error 127
0