基本操作
#include #include #include #include #include "soci.h"
// 使用soci访问sqlite3.
// 参考 http://blog.csdn.net/littlewhite1989/article/details/54691367
// soci官方文档test-sqlite3.cpp
// 创建表
static void CreateTable(soci::session& db) {
db << "CREATE TABLE IF NOT EXISTS STUDENTS ("
"ID INTEGER PRIMARY KEY AUTOINCREMENT,"
"NAME VARCHAR(50) NOT NULL,"
"AGE INTEGER NOT NULL"
")";
}
// 插入数据
static void TestInsert(soci::session& db, const std::string& name, int age) {
// 2.直接执行语句,相当于调用sqlite3_exec(),使用soci::use来传递参数。
try {
db << "INSERT INTO STUDENTS(NAME, AGE) VALUES(:name, :age)", soci::use(name), soci::use(age);
} catch (const soci::soci_error& e) {
std::cout << e.what() << std::endl;
return;
}
}
// 删除数据
static void TestDelete(soci::session& db, const std::string& name) {
// 3.先prepare编译SQL语句,然后在执行。
soci::statement stmt = (db.prepare << "DELETE FROM STUDENTS WHERE NAME = :name", soci::use(name));
stmt.execute(true);
long long affected_rows = stmt.get_affected_rows();
std::cout << "Affected rows is " << affected_rows << "." << std::endl;
}
// 修改数据
static void TestUpdate(soci::session& db, const std::string& name, int age) {
try {
db << "UPDATE STUDENTS SET AGE = :age WHERE NAME = :name", soci::use(age), soci::use(name);
} catch (const soci::soci_error& e) {