sqlITE 的可视化处理工具:http://download.csdn.net/detail/sweetloveft/7587993
示例代码:
#include <iostream> using namespace std; extern "C"{ #include "sqlite3.h" } #pragma comment(lib,"sqlite3.lib") int main() { string sql; sqlite3 *db; char *errMsg; sqlite3_open("mydatabase.db",&db); sql = "CREATE TABLE mpu (id TEXT)"; sqlite3_exec(db,sql.c_str(),NULL,&errMsg); sqlite3_close(db); return 0; }
小结:
需要材料:百度 sqlite3,进入官网下载所需的 dll、def、lib、h 文件,并把 dll 与 def 放在同一目录下。
代码中:至少需要包含 sqlite3.h,cpp 文件的包含需要添加 extern "C"
主要代码:
sqlite3_open(const char* filename,sqlite3** ppDb); // 打开数据库,有其他的打开方方不再列举 sqlite3_exec(sqlite3* db,const char* sql,int (*callback)(void*,int,char**,char**),void*,char** errmsg); // 执行一条 sql 语句 sqlite3_close(sqlite3* db); // 关闭数据库
sqlITE 语句(sql 关键字均需要大写, 其他字段大小写不敏感。可参考http://www.jb51.cc/article/p-ubnlqojf-yo.html,以下列举常用的):
建表:CREATE TABLE 表名 (参数名 类型,参数名 类型,...) 例:CREATE TABLE person (name TEXT)
注:支持的类型包含请查看:http://www.oschina.net/translate/data-types-in-sqlite-version-3?cmp
改表名:ALTER TABLE 原表名 RENAME TO 新表名 例:ALTER TABLE person RENAME TO vip
增加一列:ALTER TABLE 表名 ADD COLUMN 列名 数据类型 限定 例:ALTER TABLE vip ADD COLUMN sex TEXT
注:没有删除一列这样的操作
删除表:DROP TABLE 表名
增:INSERT INTO 表名 (列1,列2,...) VALUES (值1,值2,...)
删:DELETE FROM 表名 WHERE 列名 = 某值,没有 WHERE 子句则会在保留表结构、属性、索引完整的情况下删除所有行
查:SELECT 列1,... FROM 表名 WHERE 列名 运算符 值 AND/OR 列名 运算符 值
注:SELECT * FROM 表名 中,* 表示所有项
改:UPDATE 表名 SET 列名 = 新值 WHERE 列名 = 原值
排序:SELECT 列 FROM 表名 ORDER BY 列名1,列名2 DESC,没有 DESC 则是升序排列,否则是降序排列
1,判断表是否存在:
'SELECT count(*) FROM sqlite_master WHERE type="table" AND name = "your_table_name"
type='view'判断视图.结果>0就是有这个表,主要是sqlite_master这个系统表。
2,'SELECT name,sql FROM sqlite_master WHERE type="table" AND name = "your_table_name"
这个结果取出来,sql字段应该就是建表语句了,通过建表语句获得其列名
编码转换(sqlite3 存储时是用 UTF8 编码的):
BOOL Csqlite::Utf8ToUnicode(char *src,CString &dest) { DWORD dwUnicodeLen; //转换后Unicode的长度 TCHAR *pwText(nullptr); //保存Unicode的指针 //获得转换后的长度,并分配内存 dest = _T(""); dwUnicodeLen = MultiByteToWideChar(CP_UTF8,src,-1,NULL); pwText = new TCHAR[dwUnicodeLen]; if (!pwText) return FALSE; MultiByteToWideChar(CP_UTF8,pwText,dwUnicodeLen); dest = pwText; delete[] pwText; return TRUE; } BOOL Csqlite::UnicodeToUtf8(CString src,char *dest,int len) { if (!dest) return FALSE; WideCharToMultiByte(CP_UTF8,src.GetLength(),dest,len,NULL); return TRUE; }原文链接:https://www.f2er.com/sqlite/200408.html