C++访问SQLite
来源:互联网 发布:光大证券 mac 编辑:程序博客网 时间:2024/05/21 19:41
1.安装SQLite
sudo apt-get install sqlite3
2.安装SQLite开发包
sudo apt-get install libsqlite3-dev
3.创建表
$sqlite3 Acceptor_0.db
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE maxPromised(id BIGINT auto_increment primary key, lock_name varchar(128), instance_no BIGINT, ballot_no BIGINT);
sqlite> CREATE TABLE maxAccepted(id BIGINT auto_increment primary key, lock_name varchar(128), instance_no BIGINT, ballot_no BIGINT, usid char(37), val_len int, val_str varchar(128));
4.代码片段
#include <sqlite3.h>sqlite3 *conn;char * sErrMsg = 0;//databasestring dbfile = Utils::string_format("%s/Acceptor_%d.db",LOG_DIR, id);int result = sqlite3_open_v2( dbfile.c_str(), &conn, SQLITE_OPEN_READWRITE | SQLITE_OPEN_FULLMUTEX, NULL );//sqlite3_exec(conn, "PRAGMA synchronous = OFF", NULL, NULL, &sErrMsg);//sqlite3_exec(conn, "PRAGMA journal_mode = MEMORY", NULL, NULL, &sErrMsg);if (result) {LOGGER(ERROR)<<"Can't open database: "<<sqlite3_errmsg(conn);exit(0);}//插入//permanent mediasqlite3_prepare(acceptor->conn, "INSERT INTO maxAccepted(lock_name, instance_no, ballot_no, usid, val_len, val_str) VALUES(?, ?, ?, ?, ?, NULL);", -1, &stmt, &zTail );sqlite3_bind_text(stmt, 1, field, -1, SQLITE_STATIC);sqlite3_bind_int64(stmt,2, prepare->instanceNo);sqlite3_bind_int64(stmt,3, accRec->bno);sqlite3_bind_text(stmt, 4, accRec->usid, SessionId::size, SQLITE_STATIC);sqlite3_bind_int(stmt, 5, accRec->vallen);//sqlite3_bind_text(stmt, 6, accRec->value);int result = sqlite3_step(stmt);if (result != SQLITE_DONE) {LOGGER(ERROR)<<sqlite3_errmsg(acceptor->conn);}sqlite3_finalize(stmt);//更新sqlite3_prepare(acceptor->conn, "UPDATE maxPromised set ballot_no = ? WHERE lock_name = ? AND instance_no = ?;", -1, &stmt, &zTail );sqlite3_bind_int64(stmt,1, prepare->ballotNo);sqlite3_bind_text(stmt, 2, field, -1, SQLITE_STATIC);sqlite3_bind_int64(stmt,3, prepare->instanceNo);int result = sqlite3_step(stmt);if (result != SQLITE_DONE) {LOGGER(ERROR)<<sqlite3_errmsg(acceptor->conn);}sqlite3_finalize(stmt);//查询const char* field = NULL;uint64_t iid = 0;uint64_t bno = 0;sqlite3_stmt * stmt; const char *zTail; //recover maxAccepted//permanent mediasqlite3_prepare(conn, "SELECT * FROM maxAccepted",-1, &stmt, &zTail );while ( (result = sqlite3_step(stmt)) == SQLITE_ROW) {field = (const char*)sqlite3_column_text(stmt,1);iid = sqlite3_column_int64(stmt,2);bno = sqlite3_column_int64(stmt,3);printf("%s %lu %lu\n", field, iid, bno);}sqlite3_finalize(stmt);//close databasesqlite3_close(conn);
参考资料:
1.SQLite Embedded Database http://www.yolinux.com/TUTORIALS/SQLite.html
2.How do I improve the performance of SQLite? http://stackoverflow.com/questions/1711631/how-do-i-improve-the-performance-of-sqlite
- c++SQLite
- C#访问SQLite数据库
- C#访问SQLite数据库
- C#访问SQLite数据库
- 用python访问sqlite
- python 访问 sqlite 数据库
- python 访问 sqlite 数据库
- SQLite访问封装类
- C# 访问 SQLite
- Qt4访问sqlite数据库
- C++访问SQLITE
- Java访问sqlite数据库
- android访问sqlite数据库
- 用Java访问SQLite
- SQLite数据访问
- ios访问sqlite数据库
- html5访问sqlite解说
- C++访问SQLite
- [学习记录]android 透明色应用
- Xmemcached用户指南
- STM32 ----小谈FSMC RS选择
- ios 后台长短时间运行
- HitTest 和SubItemHitTest
- C++访问SQLite
- [学习记录]android 状态栏背景修改为透明
- XXX-Info.plist中某些属性本地化
- Xmemcached使用之与Spring整合
- Android应用性能优化之使用SparseArray替代HashMap
- Android 4.0音乐问题
- C#学习笔记(一)
- Hibernate3 采用注解方式做数据库映射的一些误区
- 开源全文搜索(搜索引擎)