在C++中使用SQLite数据库,你需要安装SQLite库,并在你的项目中链接它。以下是一个简单的环境配置指南,并提供了一个登录注册界面的示例代码。
安装SQLite3:
- 在Linux上,使用包管理器安装,如:
sudo apt-install sqlite3
。 - 在Windows上,从SQLite官网下载预编译的二进制文件并安装。
- 在你的C++项目中,确保你有SQLite的头文件(通常是
sqlite3.h
)和库文件(如libsqlite3.so
或libsqlite3.a
)。 - 配置你的项目,确保编译器知道头文件的位置,并且在链接时指定库文件。
登录注册界面示例代码(仅提供核心函数,不包括完整界面):
#include <iostream>
#include <sqlite3.h>
bool createUser(sqlite3* db, const std::string& username, const std::string& password) {
char* errMsg = nullptr;
std::string sql = "INSERT INTO users (username, password) VALUES (?, ?);";
sqlite3_exec(db, "BEGIN;", nullptr, nullptr, &errMsg); // 开始事务
if (sqlite3_exec(db, sql.c_str(), nullptr, nullptr, &errMsg) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
sqlite3_exec(db, "ROLLBACK;", nullptr, nullptr, &errMsg); // 回滚事务
return false;
}
sqlite3_exec(db, "COMMIT;", nullptr, nullptr, &errMsg); // 提交事务
return true;
}
bool loginUser(sqlite3* db, const std::string& username, const std::string& password) {
char* errMsg = nullptr;
std::string sql = "SELECT COUNT(*) FROM users WHERE username = ? AND password = ?;";
sqlite3_stmt* stmt;
if (sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, nullptr) != SQLITE_OK) {
std::cerr << "Failed to prepare statement" << std::endl;
return false;
}
sqlite3_bind_text(stmt, 1, username.c_str(), -1, SQLITE_TRANSIENT);
sqlite3_bind_text(stmt, 2, password.c_str(), -1, SQLITE_TRANSIENT);
if (sqlite3_step(stmt) != SQLITE_ROW) {
std::cerr << "Failed to execute query: " << sqlite3_errmsg(db) << std::endl;
sqlite3_finalize(stmt);
return false;
}
int count = sqlite3_column_int(stmt, 0);
sqlite3_finalize(stmt);
return count > 0;
}
int main() {
sqlite3* db;
if (sqlite3_open("userdb.sqlite", &db) != SQLITE_OK) {
std::cerr << "Cannot open database: " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);