在C++中,與數據庫進行交互通常需要使用數據庫連接庫。這些庫允許你在C++程序中執行SQL查詢并處理結果。以下是一些常見的數據庫連接庫和交互方式:
#include<iostream>
#include<mysqlx/xdevapi.h>
int main() {
const std::string url = "mysqlx://user:password@localhost";
mysqlx::Session session(url);
mysqlx::Schema schema = session.getSchema("test");
mysqlx::Table table = schema.getTable("sample_table");
// 插入數據
table.insert("name", "age")
.values("Alice", 25)
.execute();
// 查詢數據
mysqlx::RowResult result = table.select().execute();
for (const auto &row : result) {
std::cout<< row[0].get<std::string>() << ", "<< row[1].get<int>()<< std::endl;
}
return 0;
}
#include<iostream>
#include <libpq-fe.h>
int main() {
const char *conninfo = "dbname=test user=postgres password=secret hostaddr=127.0.0.1 port=5432";
PGconn *conn = PQconnectdb(conninfo);
if (PQstatus(conn) != CONNECTION_OK) {
std::cerr << "Connection to database failed: " << PQerrorMessage(conn)<< std::endl;
PQfinish(conn);
return 1;
}
// 執行查詢
PGresult *res = PQexec(conn, "SELECT name, age FROM sample_table");
if (PQresultStatus(res) != PGRES_TUPLES_OK) {
std::cerr << "Query failed: " << PQerrorMessage(conn)<< std::endl;
PQclear(res);
PQfinish(conn);
return 1;
}
// 處理結果
int rows = PQntuples(res);
for (int i = 0; i< rows; ++i) {
std::cout << PQgetvalue(res, i, 0) << ", " << PQgetvalue(res, i, 1)<< std::endl;
}
PQclear(res);
PQfinish(conn);
return 0;
}
#include<iostream>
#include<sqlite_modern_cpp.h>
int main() {
sqlite::database db("test.db");
// 創建表
db << "CREATE TABLE IF NOT EXISTS sample_table (name TEXT, age INTEGER);";
// 插入數據
db << "INSERT INTO sample_table (name, age) VALUES (?, ?);"
<< "Alice"
<< 25;
// 查詢數據
db << "SELECT name, age FROM sample_table;" >> [&](const std::string &name, int age) {
std::cout<< name << ", "<< age<< std::endl;
};
return 0;
}
請注意,這些示例僅展示了基本的數據庫操作。實際應用中,你可能需要處理更復雜的查詢和事務。同時,確保正確處理錯誤和異常。