c 怎么操作数据库

C 语言操作数据库的指南:使用 MySQL 作为示例

C 语言是广泛用于开发各种应用程序的流行编程语言。要有效地构建现代应用程序,操作数据库是必不可少的。本文旨在提供一个全面的指南,教你如何使用 C 语言操作 MySQL 数据库。

先决条件

在开始之前,你需要满足以下先决条件:

- 在你的计算机上安装 C 编译器和 MySQL 数据库服务器

- 具有 C 编程和 MySQL 数据库的基础知识

1. 连接到 MySQL 数据库

第一步是连接到 MySQL 数据库。为此,你需要使用 `mysql_init()` 和 `mysql_real_connect()` 函数。以下是连接到名为 "mydb" 的数据库的示例代码:

c

#include #include #include

int main() {

MYSQL *conn;

conn = mysql_init(NULL);

if (conn == NULL) {

fprintf(stderr, "Error initializing MySQL connection\n");

return EXIT_FAILURE;

}

if (mysql_real_connect(conn, "localhost", "root", "password", "mydb", 3306, NULL, 0) == NULL) {

fprintf(stderr, "Error connecting to MySQL database\n");

mysql_close(conn);

return EXIT_FAILURE;

}

printf("Connected to MySQL database\n");

mysql_close(conn);

return EXIT_SUCCESS;

}

2. 执行 SQL 查询

一旦连接到数据库,就可以使用 `mysql_query()` 函数执行 SQL 查询。以下是执行查询并打印结果的示例代码:

c

#include #include #include

int main() {

MYSQL *conn;

MYSQL_RES *res;

MYSQL_ROW row;

conn = mysql_init(NULL);

if (conn == NULL) {

fprintf(stderr, "Error initializing MySQL connection\n");

return EXIT_FAILURE;

}

if (mysql_real_connect(conn, "localhost", "root", "password", "mydb", 3306, NULL, 0) == NULL) {

fprintf(stderr, "Error connecting to MySQL database\n");

mysql_close(conn);

return EXIT_FAILURE;

}

if (mysql_query(conn, "SELECT * FROM users") != 0) {

fprintf(stderr, "Error executing SQL query\n");

mysql_close(conn);

return EXIT_FAILURE;

}

res = mysql_store_result(conn);

if (res == NULL) {

fprintf(stderr, "Error storing result set\n");

mysql_close(conn);

return EXIT_FAILURE;

}

while ((row = mysql_fetch_row(res)) != NULL) {

printf("%s %s %d\n", row[0], row[1], atoi(row[2]));

}

mysql_free_result(res);

mysql_close(conn);

return EXIT_SUCCESS;

}

3. 预处理语句

预处理语句是一种提高 SQL 查询性能和安全性的技术。它涉及将 SQL 语句预编译为由数据库服务器存储的可执行计划。以下是使用预处理语句的示例代码:

c

#include #include #include

int main() {

MYSQL *conn;

MYSQL_STMT *stmt;

MYSQL_BIND param[2];

conn = mysql_init(NULL);

if (conn == NULL) {

fprintf(stderr, "Error initializing MySQL connection\n");

return EXIT_FAILURE;

}

if (mysql_real_connect(conn, "localhost", "root", "password", "mydb", 3306, NULL, 0) == NULL) {

fprintf(stderr, "Error connecting to MySQL database\n");

mysql_close(conn);

return EXIT_FAILURE;

}

stmt = mysql_stmt_init(conn);

if (stmt == NULL) {

fprintf(stderr, "Error initializing MySQL statement\n");

mysql_close(conn);

return EXIT_FAILURE;

}

if (mysql_stmt_prepare(stmt, "SELECT * FROM users WHERE id = ? AND age = ?", 0) != 0) {

fprintf(stderr, "Error preparing MySQL statement\n");

mysql_stmt_close(stmt);

mysql_close(conn);

return EXIT_FAILURE;

}

memset(param, 0, sizeof(param));

param[0].buffer_type = MYSQL_TYPE_LONG;

param[0].buffer = &id;

param[0].is_null = 0;

param[1].buffer_type = MYSQL_TYPE_LONG;

param[1].buffer = &age;

param[1].is_null = 0;

if (mysql_stmt_bind_param(stmt, param) != 0) {

fprintf(stderr, "Error binding parameters to MySQL statement\n");

mysql_stmt_close(stmt);

mysql_close(conn);

return EXIT_FAILURE;

}

if (mysql_stmt_execute(stmt) != 0) {

fprintf(stderr, "Error executing MySQL statement\n");

mysql_stmt_close(stmt);

mysql_close(conn);

return EXIT_FAILURE;

}

if (mysql_stmt_store_result(stmt) != 0) {

fprintf(stderr, "Error storing result set\n");

mysql_stmt_close(stmt);

mysql_close(conn);

return EXIT_FAILURE;

}

while ((row = mysql_fetch_row(res)) != NULL) {

printf("%s %s %d\n", row[0], row[1], atoi(row[2]));

}

mysql_free_result(res);

mysql_stmt_close(stmt);

mysql_close(conn);

return EXIT_SUCCESS;

}

4. 插入、更新和删除数据

使用 C 语言操作 MySQL 数据库时,通常需要执行数据操作操作,例如插入、更新和删除数据。以下是执行这些操作的示例代码:

插入数据:

c

if (mysql_query(conn, "INSERT INTO users (name, email, age) VALUES ('John', 'john@example.com', 30)") != 0) {

fprintf(stderr, "Error inserting data into MySQL database\n");

mysql_close(conn);

return EXIT_FAILURE;

}

更新数据:

c

if (mysql_query(conn, "UPDATE users SET name = 'Jane' WHERE id = 1") != 0) {

fprintf(stderr, "Error updating data in MySQL database\n");

mysql_close(conn);

return EXIT_FAILURE;

}

删除数据:

c

if (mysql_query(conn, "DELETE FROM users WHERE id = 3") != 0) {

fprintf(stderr, "Error deleting data from MySQL database\n");

mysql_close(conn);

return EXIT_FAILURE;

}

5. 错误处理

在操作 MySQL 数据库时,错误处理至关重要。以下是处理错误的示例代码:

c

if (mysql_errno(conn) != 0) {

fprintf(stderr, "Error code: %d\n", mysql_errno(conn));

fprintf(stderr, "Error message: %s\n", mysql_error(conn));

}

结论

本文提供了使用 C 语言操作 MySQL 数据库的全面指南。通过遵循本文中概述的步骤,你可以轻松地连接到数据库、执行 SQL 查询、操作数据并处理错误。遵循最佳实践,如使用预处理语句和错误处理,将有助于你构建鲁棒且高效的 C 应用程序。