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, 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://blog.csdn.net/gykimo/article/details/26985853,以下列举常用的):
建表: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, 列2, ... 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, NULL, src, -1, NULL, NULL);
pwText = new TCHAR[dwUnicodeLen];
if (!pwText)
return FALSE;
MultiByteToWideChar(CP_UTF8, NULL, src, -1, pwText, dwUnicodeLen);
dest = pwText;
delete[] pwText;
return TRUE;
}
BOOL CSqlite::UnicodeToUtf8(CString src, char *dest, int len)
{
if (!dest)
return FALSE;
WideCharToMultiByte(CP_UTF8, NULL, src, src.GetLength(), dest, len,
NULL, NULL);
return TRUE;
}