SQLITE3 学习

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;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值