在Linux下使用C++连接数据库,通常有以下几种方式:
#include <mysql/mysql.h>
#include <iostream>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, "localhost", "username", "password", "database_name", 0, NULL, 0)) {
std::cerr << "Error: unable to connect to database" << std::endl;
exit(1);
}
if (mysql_query(conn, "SHOW TABLES")) {
std::cerr << "Error: query failed" << std::endl;
exit(1);
}
res = mysql_store_result(conn);
while ((row = mysql_fetch_row(res))) {
std::cout << row[0] << std::endl;
}
mysql_free_result(res);
mysql_close(conn);
return 0;
}
#include <sqlite3.h>
#include <iostream>
static int callback(void *data, int argc, char **argv, char **azColName) {
for (int i = 0; i < argc; i++) {
std::cout << azColName[i] << ": " << (argv[i] ? argv[i] : "NULL") << std::endl;
}
std::cout << std::endl;
return 0;
}
int main() {
sqlite3 *db;
char *err_msg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
std::cerr << "Error: unable to open database" << std::endl;
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, "SELECT * FROM users", callback, 0, &err_msg);
if (rc != SQLITE_OK) {
std::cerr << "Error: query failed" << std::endl;
sqlite3_free(err_msg);
sqlite3_close(db);
exit(1);
}
sqlite3_close(db);
return 0;
}
#include <mysql++.h>
#include <iostream>
int main() {
mysqlpp::Connection conn(false);
if (conn.connect("database_name", "localhost", "username", "password")) {
std::cout << "Connected to database" << std::endl;
} else {
std::cerr << "Error: unable to connect to database" << std::endl;
exit(1);
}
mysqlpp::Query query = conn.query();
query << "SELECT * FROM users";
mysqlpp::StoreQueryResult result = query.store();
for (size_t i = 0; i < result.num_rows(); ++i) {
std::cout << result[i]["username"] << std::endl;
}
return 0;
}
注意:在使用这些库之前,请确保已经安装了相应的开发库和头文件。在编译时,需要链接相应的库文件。例如,对于MySQL C API,可以使用-lmysqlclient
选项进行链接。