加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLITE3 学习

发布时间:2020-12-12 19:59:47 所属栏目:百科 来源:网络整理
导读:SQLITE 的可视化处理工具:http://download.csdn.net/detail/sweetloveft/7587993 示例代码: #include iostreamusing namespace std;extern "C"{#include "sqlite3.h"}#pragma comment(lib,"sqlite3.lib")int main(){string sql;sqlite3 *db;char *errMsg;s

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.52php.cn/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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读