使用C语言操作MySQL数据库(c 与 mysql数据库)
使用C语言操作MySQL数据库
MySQL数据库是一种开源的关系型数据库,被广泛应用于各种Web应用。C语言是一种古老却稳定的编程语言,同时也具有高效性和可移植性。在本文中,我们将介绍如何使用C语言操作MySQL数据库以实现数据的读取、插入、删除和更新等基本操作。
1. 安装MySQL C API库
MySQL C API库是一种用于C语言的MySQL接口,需要在编写C程序时使用。其主要功能包括连接数据库、创建表、插入数据、更新数据、删除数据和查询数据等。在使用MySQL C API库之前,请确保已经安装了该库。
2. 连接MySQL数据库
在使用MySQL C API库之前,我们需要先连接MySQL数据库。这可以通过mysql_init()函数来实现。该函数会初始化一个MYSQL结构,并返回该结构的指针。具体代码如下所示:
#include
int mn(void) { MYSQL *conn;
conn = mysql_init(NULL); if (conn == NULL) {
fprintf(stderr, "Error: %s\n", mysql_error(conn)); exit(1);
}
return 0;}
在上述代码中,我们首先包含mysql.h头文件,其包含了MySQL C API库中所有的函数和结构体。接着,我们使用mysql_init()函数初始化了一个MYSQL结构,并将其赋值给conn指针。如果初始化失败,则输出错误信息并退出程序。
3. 连接MySQL服务器
初始化MYSQL结构后,我们还需要连接MySQL服务器。这可以通过mysql_real_connect()函数来实现。具体代码如下所示:
MYSQL *conn;
conn = mysql_init(NULL);if (conn == NULL) {
fprintf(stderr, "Error: %s\n", mysql_error(conn)); exit(1);
}
if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL) { fprintf(stderr, "Error: %s\n", mysql_error(conn));
mysql_close(conn); exit(1);
}
在上述代码中,我们使用了mysql_real_connect()函数连接MySQL服务器。其中,参数分别为:MYSQL指针、服务器地址、用户名、密码、数据库名称、端口号、UNIX套接字、连接标志等。如果连接失败,则输出错误信息并关闭连接,并退出程序。
4. 执行MySQL命令
连接MySQL服务器后,我们可以通过mysql_query()函数执行MySQL命令。具体代码如下所示:
if (mysql_query(conn, "SELECT * FROM table")) {
fprintf(stderr, "Error: %s\n", mysql_error(conn)); mysql_close(conn);
exit(1);}
在上述代码中,我们使用mysql_query()函数执行了一条“SELECT * FROM table”命令。如果执行失败,则输出错误信息并关闭连接,并退出程序。
5. 处理MySQL结果
执行MySQL命令后,我们可以通过mysql_store_result()函数获取查询结果。具体代码如下所示:
MYSQL_RES *res;
MYSQL_ROW row;
if ((res = mysql_store_result(conn)) == NULL) { fprintf(stderr, "Error: %s\n", mysql_error(conn));
mysql_close(conn); exit(1);
}
while ((row = mysql_fetch_row(res))) { printf("%s %s\n", row[0], row[1]);
}
mysql_free_result(res);
在上述代码中,我们使用mysql_store_result()函数获取查询结果,并使用mysql_fetch_row()函数逐行获取结果集。对于每一行数据,我们可以通过row[i]来访问其中的列。在我们使用mysql_free_result()函数释放查询结果。
6. 插入数据
除了查询数据外,我们还可以使用MySQL C API库插入数据。具体代码如下所示:
char *name = "Test";
int age = 20;char *query = (char*) malloc(100);
sprintf(query, "INSERT INTO table VALUES ('%s', '%d')", name, age);if (mysql_query(conn, query)) {
fprintf(stderr, "Error: %s\n", mysql_error(conn)); mysql_close(conn);
exit(1);}
free(query);
在上述代码中,我们首先定义了name和age变量,并使用sprintf()函数将其格式化为一条“INSERT INTO table VALUES (‘Test’, ’20’)”命令。接着,我们使用mysql_query()函数插入数据。如果插入失败,则输出错误信息并关闭连接,并退出程序。
7. 更新数据
类似地,我们也可以使用MySQL C API库更新数据。具体代码如下所示:
char *name = "Test";
int age = 25;char *query = (char*) malloc(100);
sprintf(query, "UPDATE table SET age = %d WHERE name = '%s'", age, name);if (mysql_query(conn, query)) {
fprintf(stderr, "Error: %s\n", mysql_error(conn)); mysql_close(conn);
exit(1);}
free(query);
在上述代码中,我们定义了name和age变量,并使用sprintf()函数将其格式化为一条“UPDATE table SET age = 25 WHERE name = ‘Test’”命令。接着,我们使用mysql_query()函数更新数据。如果更新失败,则输出错误信息并关闭连接,并退出程序。
8. 删除数据
我们也可以使用MySQL C API库删除数据。具体代码如下所示:
char *name = "Test";
char *query = (char*) malloc(100);
sprintf(query, "DELETE FROM table WHERE name = '%s'", name);if (mysql_query(conn, query)) {
fprintf(stderr, "Error: %s\n", mysql_error(conn)); mysql_close(conn);
exit(1);}
free(query);
在上述代码中,我们定义了name变量,并使用sprintf()函数将其格式化为一条“DELETE FROM table WHERE name = ‘Test’”命令。接着,我们使用mysql_query()函数删除数据。如果删除失败,则输出错误信息并关闭连接,并退出程序。
综上所述,本文介绍了如何使用C语言操作MySQL数据库,包括连接MySQL数据库、执行MySQL命令、处理MySQL结果、插入数据、更新数据和删除数据等基本操作。通过这些操作,我们可以快速地读取、插入、更新和删除数据,实现各种基于MySQL数据库的应用程序。