mysql.h
头文件,然后初始化一个MYSQL
结构体,设置必要的连接参数(如主机名、用户名、密码和数据库名),最后调用mysql_real_connect()
函数进行连接。以下是一个示例代码片段:,,``c,#include,#include,,int main() {, MYSQL *conn;, conn = mysql_init(NULL);, if (conn == NULL) {, fprintf(stderr, "%s,", mysql_error(conn));, exit(1);, }, if (mysql_real_connect(conn, "localhost", "root", "password", "testdb", 0, NULL, 0) == NULL) {, fprintf(stderr, "%s,", mysql_error(conn));, mysql_close(conn);, exit(1);, }, // 执行查询或其他操作..., mysql_close(conn);, return 0;,},
`,,这个程序演示了如何初始化MySQL连接,连接到名为
testdb`的数据库,并在完成后关闭连接。在C语言中连接MySQL数据库,通常使用MySQL提供的C API,以下是详细步骤和示例代码:
一、包含必要的头文件
需要包含MySQL的头文件。
#include <mysql/mysql.h>
二、初始化和连接数据库
1、初始化MySQL库:
使用mysql_init
函数初始化MySQL库。
MYSQL *conn = mysql_init(NULL); if (conn == NULL) { fprintf(stderr, "mysql_init() failed "); return EXIT_FAILURE; }
2、设置连接参数并连接数据库:
使用mysql_real_connect
函数连接到MySQL服务器。
const char *server = "localhost";
const char *user = "root";
const char *password = "password"; /注意实际应用中避免硬编码密码 */
const char *database = "testdb";
if (mysql_real_connect(conn, server, user, password, database, 0, NULL, 0) == NULL) {
fprintf(stderr, "mysql_real_connect() failed
");
fprintf(stderr, "Error: %s
", mysql_error(conn));
mysql_close(conn);
return EXIT_FAILURE;
}
三、执行SQL语句
1、执行SQL查询:
使用mysql_query
函数执行SQL查询。
if (mysql_query(conn, "SELECT * FROM table_name")) { fprintf(stderr, "SELECT * FROM table_name failed. Error: %s ", mysql_error(conn)); mysql_close(conn); return EXIT_FAILURE; }
2、获取结果集:
使用mysql_store_result
函数获取结果集。
MYSQL_RES *res = mysql_store_result(conn); if (res == NULL) { fprintf(stderr, "mysql_store_result() failed. Error: %s ", mysql_error(conn)); mysql_close(conn); return EXIT_FAILURE; }
3、处理结果集:
使用mysql_fetch_row
函数逐行读取数据。
int num_fields = mysql_num_fields(res); MYSQL_ROW row; while ((row = mysql_fetch_row(res))) { for (int i = 0; i < num_fields; i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf(" "); }
4、释放结果集:
使用mysql_free_result
函数释放结果集。
mysql_free_result(res);
四、关闭连接
操作完成后,必须关闭数据库连接以释放资源。
mysql_close(conn);
五、完整示例代码
#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, "mysql_init() failed "); return EXIT_FAILURE; } // 设置连接参数并连接数据库 if (mysql_real_connect(conn, "localhost", "root", "password", "testdb", 0, NULL, 0) == NULL) { fprintf(stderr, "mysql_real_connect() failed "); fprintf(stderr, "Error: %s ", mysql_error(conn)); mysql_close(conn); return EXIT_FAILURE; } // 执行SQL查询 if (mysql_query(conn, "SELECT * FROM table_name")) { fprintf(stderr, "SELECT * FROM table_name failed. Error: %s ", mysql_error(conn)); mysql_close(conn); return EXIT_FAILURE; } // 获取结果集 res = mysql_store_result(conn); if (res == NULL) { fprintf(stderr, "mysql_store_result() failed. Error: %s ", mysql_error(conn)); mysql_close(conn); return EXIT_FAILURE; } // 处理结果集 int num_fields = mysql_num_fields(res); while ((row = mysql_fetch_row(res))) { for (int i = 0; i < num_fields; i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf(" "); } // 释放结果集 mysql_free_result(res); // 关闭连接 mysql_close(conn); return EXIT_SUCCESS; }
六、常见问题与解答
1. 问题:如何在C语言中使用MySQL Connector/C++库而不是MySQL C API?
解答:MySQL Connector/C++是一个面向C++的库,提供了更现代的C++接口来连接MySQL数据库,如果你的项目是C++项目并且希望使用C++特性,可以选择MySQL Connector/C++,以下是一个简单的示例:
#include <iostream> #include <driver.h> #include <exception.h> #include <condition_variable> #include <cppconn/prepared_statement.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include <memory> #include <stdexcept> #include <string> #include <vector> using namespace std; using namespace sql; int main() { try { Driver* driver = get_driver_instance(); unique_ptr<Connection> con(driver->connect("tcp://127.0.0.1:3306", "root", "password")); unique_ptr<Statement> stmt(con->createStatement()); unique_ptr<ResultSet> res(stmt->executeQuery("SELECT * FROM table_name")); while (res->next()) { cout << "id = " << res->getInt("id") << ", name = " << res->getString("name") << endl; } } catch (SQLException& e) { cout << "# ERR: SQLException in " << __FILE__; cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl; cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; } catch (std::exception& e) { cout << "STD Exception: " << e.what() << endl; } catch (...) { cout << "Unknown exception" << endl; } return 0; }
你需要确保安装了MySQL Connector/C++库,并在编译时链接相应的库文件,在Linux环境下,可以使用以下命令进行编译:
g++ -o my_program my_program.cpp -lmysqlcppconn8
各位小伙伴们,我刚刚为大家分享了有关“c连接mysql数据库的方法及示例”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!