📅  最后修改于: 2023-12-03 15:20:18.240000             🧑  作者: Mango
本文将介绍如何在使用CMake构建的项目中集成SQLite,以及如何使用SQLite进行SQL数据库操作。SQLite是一种嵌入式关系数据库管理系统,它提供了简单且易于使用的SQL接口,适用于各种规模的应用程序。
find_package(SQLite3 REQUIRED)
target_link_libraries(your_target_name SQLite::SQLite3)
可以使用SQLite提供的API执行SQL语句。以下是一个简单的例子:
#include <sqlite3.h>
#include <iostream>
int main() {
sqlite3 *db;
int rc;
char *errMsg;
rc = sqlite3_open(":memory:", &db);
if (rc != SQLITE_OK) {
std::cerr << "Cannot open database: " << sqlite3_errmsg(db) << std::endl;
return rc;
}
const char *sql = "CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);";
rc = sqlite3_exec(db, sql, nullptr, nullptr, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
} else {
std::cout << "Table created successfully" << std::endl;
}
sqlite3_close(db);
return 0;
}
在上面的示例中,我们打开一个内存数据库,并执行了创建表的SQL语句。您可以根据需要执行其他SQL操作,例如插入、查询或更新数据。
SQLite提供了一套API来执行CRUD(创建、读取、更新、删除)操作。以下是一个使用SQLite API进行CRUD操作的简单示例:
#include <sqlite3.h>
#include <iostream>
int main() {
sqlite3 *db;
int rc;
char *errMsg;
rc = sqlite3_open(":memory:", &db);
if (rc != SQLITE_OK) {
std::cerr << "Cannot open database: " << sqlite3_errmsg(db) << std::endl;
return rc;
}
const char *sql = "CREATE TABLE employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);";
rc = sqlite3_exec(db, sql, nullptr, nullptr, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
sqlite3_close(db);
return rc;
} else {
std::cout << "Table created successfully" << std::endl;
}
// 插入数据
sql = "INSERT INTO employees (id, name, age) VALUES (1, 'John Doe', 30);";
rc = sqlite3_exec(db, sql, nullptr, nullptr, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
} else {
std::cout << "Record inserted successfully" << std::endl;
}
// 查询数据
sql = "SELECT * FROM employees;";
rc = sqlite3_exec(db, sql, [](void *data, int columnCount, char **columnValues, char **columnName) -> int {
for (int i = 0; i < columnCount; ++i) {
std::cout << columnName[i] << ": " << columnValues[i] << std::endl;
}
return 0;
}, nullptr, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
}
sqlite3_close(db);
return 0;
}
在上面的示例中,我们首先创建了一个名为"employees"的表,然后插入了一条记录。最后,我们查询了表中的所有数据,并打印出每一列的名称和值。
通过在CMake项目中集成SQLite并使用SQLite API执行SQL操作,您可以方便地使用SQLite作为嵌入式数据库管理系统。以上示例提供了一个简单的入门指南,您可以根据需要进行扩展和修改。希望本文对您理解如何在CMake项目中使用SQLite提供了帮助。