在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)