MySQL是一個關于開放源代碼的關系型數據庫管理系統(RDBMS),采用了C/S架構。為了更方便地調用MySQL數據庫,我們需要使用指定的語言進行操作。本文將介紹MySQL的C API和使用C語言編寫的MySQL操作類。
MySQL的C API(Application Programming Interface)提供了一組函數,用于使用C語言編寫與MySQL數據庫的交互。在使用C API之前,需要先進行MySQL服務器的連接,之后使用函數進行操作,例如執行SQL查詢語句等。
#include#include int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = "password"; char *database = "testdb"; conn = mysql_init(NULL); if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { printf("Failed to connect to MySQL: %s\n", mysql_error(conn)); return 1; } if (mysql_query(conn, "SELECT * FROM test_table")) { printf("Error: %s\n", mysql_error(conn)); return 1; } res = mysql_use_result(conn); while ((row = mysql_fetch_row(res)) != NULL) { printf("%s %s %s\n", row[0], row[1], row[2]); } mysql_free_result(res); mysql_close(conn); return 0; }
另外,我們還可以使用C語言編寫MySQL的操作類,簡化MySQL操作過程。下面是一個使用C++語言封裝MySQL操作的類:
#include#include class Mysql { public: Mysql(); ~Mysql(); bool connect(const std::string &host, const std::string &user, const std::string &pass, const std::string &db, const unsigned int &port=0); bool query(const std::string &query_str); MYSQL_RES* use_result(); int num_rows(); int affected_rows(); private: MYSQL *mysql_; MYSQL_RES *result_; }; Mysql::Mysql() { mysql_ = NULL; result_ = NULL; } Mysql::~Mysql() { mysql_free_result(result_); mysql_close(mysql_); } bool Mysql::connect(const std::string &host, const std::string &user, const std::string &pass, const std::string &db, const unsigned int &port) { mysql_ = mysql_init(mysql_); if (mysql_real_connect(mysql_, host.c_str(), user.c_str(), pass.c_str(), db.c_str(), port, NULL, 0) == NULL) { printf("Failed to connect to MySQL: %s\n", mysql_error(mysql_)); return false; } else { return true; } } bool Mysql::query(const std::string &query_str) { if (mysql_query(mysql_, query_str.c_str())) { printf("Failed to query database: %s\n", mysql_error(mysql_)); return false; } else { result_ = mysql_use_result(mysql_); return true; } } MYSQL_RES* Mysql::use_result() { return result_; } int Mysql::num_rows() { return mysql_num_rows(result_); } int Mysql::affected_rows() { return mysql_affected_rows(mysql_); }
使用封裝好的類,可以更加方便地進行MySQL的操作,減少手寫SQL語句的時間和錯誤率。
以上就是MySQL的C API和使用C語言編寫的MySQL操作類的簡介和示例代碼,希望對大家有所幫助。