[MFC]Sqlite问题小记

简介:

一、 使用Sqliteman创建UTF-8和auto_vacuum=1的数据库

    1.1  Sqliteman->New 创建新数据库

    1.2  左边菜单切换到Pragmas

    1.3  选中auto_vacuum这行,点击下方Change Value按钮,输入1,点确定

    1.4  选中encoding这行,同上,但是不能直接输入UTF-8,得输入UTF8或者"UTF-8"(带双引号)点确定

    1.5  最后随便新建一个表,然后退出即可。再次打开即可看到变更后效果,否则在已经存在表的数据库中你无法修改这两个值的。

二、 使用sql语句来创建库和表

    上面用Sqliteman创建数据库并没有解决我的问题,仍然被乱码、错误代码4和8困扰,无奈之下只好用sql来创建和导入初始数据。在CppSQLiteDemo/CppSQLite3Demo.cpp的mian函数中直接写sql语句了,如下:

        remove(gszFile);
        db.open(gszFile);

        
// 创建config
        db.execDML( " create table config(id INTEGER, key TEXT, value TEXT, defaultvalue TEXT, desc TEXT); " );
        db.execDML(
" insert into config values ('1', 'IsAutoSync', '0', '1', '测试数据'); " );

    汉字部分用Sqliteman打开查看是仍然是乱码,但是程序读取出来没有问题。

三、 注意

    3.1  本文使用的代码和库均是参考文章中的库和代码,从代码中可以看出是采用UTF-8打开的连接,使用的方法是sqlite3_open而不是sqlite3_open16,而Sqliteman默认是UTF-16le。

    3.2  CppSQLiteDemo下的工程为VC6的工程,打开后执行报错,你需要把Common/sqlite3.dll拷贝到Debug目录下即可。

四、补充

    4.1  2010-5-21  想自动增长的话设置成INTEGER PRIMARY KEY就可以了,如下:

        db.execDML( " create table config(id INTEGER PRIMARY KEY, key TEXT, value TEXT, defaultvalue TEXT, desc TEXT); " );
        db.execDML(
" insert into config(key,value,defaultvalue,desc) values ('IsAutoSync', '0', '1', '测试'); " );

本文转自博客园农民伯伯的博客,原文链接:[MFC]Sqlite问题小记,如需转载请自行联系原博主。

 

目录
相关文章
|
4天前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
4天前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
|
2月前
|
人工智能 小程序 Java
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
本文介绍了一款名为PyWxDump的开源工具,它可以获取微信账户信息、解密SQLite数据库以查看和备份聊天记录。此工具适用于已登录电脑版微信的用户,通过GitHub下载后简单几步即可操作。适合对数据恢复感兴趣的开发者,但请注意合法合规使用并尊重隐私。
200 2
【工具】轻松解锁SQLite数据库,一窥微信聊天记录小秘密
|
6天前
|
SQL 数据库 数据库管理
SQLite 创建数据库
SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何特殊的权限即可创建一个数据。
13 0
|
8天前
|
JSON NoSQL 数据库
和SQLite数据库对应的NoSQL数据库:TinyDB的详细使用(python3经典编程案例)
该文章详细介绍了TinyDB这一轻量级NoSQL数据库的使用方法,包括如何在Python3环境中安装、创建数据库、插入数据、查询、更新以及删除记录等操作,并提供了多个编程案例。
19 0
|
2月前
|
SQL 存储 小程序
【教程】navicat配合HTTP通道远程连接SQLite数据库
本文介绍了如何通过 Navicat Premium 工具配合 n_tunnel_sqlite.php 和 HTTP 通道远程连接服务器上的 SQLite 数据库。SQLite 是一种自给自足的、无服务器的 SQL 数据库引擎,由于其端口未对外开放,直接使用 Navicat 进行远程连接不可行。文章详细记录了使用 HTTP 通道实现远程连接的过程,包括定位本地 `ntunnel_sqlite.php` 文件,将其上传至服务器,并通过 Navicat 配置 HTTP 通道连接 SQLite 数据库的具体步骤。
50 0
【教程】navicat配合HTTP通道远程连接SQLite数据库
|
2月前
|
关系型数据库 Java MySQL
C#winform中使用SQLite数据库
C#winform中使用SQLite数据库
61 3
C#winform中使用SQLite数据库
|
2月前
|
Java 数据库连接 数据库
java系列之~如何给sqlite数据库添加表
这篇文章介绍了如何在Java中使用SQLite JDBC驱动来连接SQLite数据库,并提供了示例代码来演示如何创建一个新的数据库表。
|
2月前
|
SQL 存储 数据库
SQLite数据库
【8月更文挑战第21天】SQLite数据库
36 3
|
2月前
|
存储 数据库 数据库管理
SQLite数据库的备份
【8月更文挑战第20天】SQLite数据库的备份
119 1
下一篇
无影云桌面