当前位置:网站首页>SQLite数据库连接字符串
SQLite数据库连接字符串
2022-07-31 05:43:00 【风神修罗使】
(基本的)
Data Source=filename;Version=3;
(使⽤编码)Using UTF16
Data Source=filename;Version=3;UseUTF16Encoding=True
(带密码的)
Data Source=filename;Version=3;Password=myPassword;
(使⽤前数据库格式)Using the pre 3.3x database format3.3x
Data Source=filename;Version=3;Legacy Format=True;
(只读连接)
Data Source=filename;Version=3;Read Only=True;
(设置连接池)
Data Source=filename;Version=3;Pooling=False;Max Pool Size=100;
使用DateTime。刻度作为日期时间格式
Data Source=filename;Version=3;DateTimeFormat=Ticks;
(把作为⽂本存储,默认是)
Data Source=filename;Version=3;BinaryGUID=False;
如果把Guid作为⽂本存储需要更多的存储空间(指定⼤⼩)
Data Source=filename;Version=3;Cache Size=2000;
Cache Size 单位是字节(指定页⼤⼩)
Data Source=filename;Version=3;Page Size=1024;
指定连接Sqlite数据库的缓存⼤⼩:
Data Source=mydb.db;Version=3;Cache Size=3000;
SQLite的连接字符串
--Basic(基本的)
Data Source=filename;Version=3;
--Using UTF16(使用UTF16编码)
Data Source=filename;Version=3;UseUTF16Encoding=True;
--With password(带密码的)
Data Source=filename;Version=3;Password=myPassword;
--Using the pre 3.3x database format(使用3.3x前数据库格式)
Data Source=filename;Version=3;Legacy Format=True;
--Read only connection(只读连接)
Data Source=filename;Version=3;Read Only=True;
--With connection pooling(设置连接池)
Data Source=filename;Version=3;Pooling=False;Max Pool Size=100;
--Using DateTime.Ticks as datetime format()
Data Source=filename;Version=3;DateTimeFormat=Ticks;
--Store GUID as text(把Guid作为文本存储,默认是Binary)
Data Source=filename;Version=3;BinaryGUID=False;
-- 如果把Guid作为文本存储需要更多的存储空间
--Specify cache size(指定Cache大小)
Data Source=filename;Version=3;Cache Size=2000;
-- Cache Size 单位是字节
--Specify page size(指定页大小)
Data Source=filename;Version=3;Page Size=1024;
-- Page Size 单位是字节
加载加密sqlite到内存
背景
为了使C#更好的适配Linux,不得不将依赖从 System.Data.SQLite 转到 Microsoft.Data.Sqlite 并要求Linux程序支持加密数据库文件,但使 Microsoft.Data.Sqlite 默认不支持加密数据库文件,但是可以使用 SQLCipher, SEE 或者SQLiteCrypt 去支持加密数据库文件。
如果不是加密的数据库文件,通过下面操作将物理数据库,备份到已经创建的可分享内存数据库
var connectionString = new SqliteConnectionStringBuilder("Data Source=sampleDatabase.db")
{
Mode = SqliteOpenMode.ReadWriteCreate
}.ToString();
var connection = new SqliteConnection(connectionString);
connection.Open();
var inMemConnectionString = new SqliteConnectionStringBuilder("Data Source=InMemorySample;Mode=Memory;Cache=Shared")
{
Mode = SqliteOpenMode.ReadWriteCreate
}.ToString();
var inMemConnection = new SqliteConnection( inMemConnectionString );
inMemConnection.Open();
connection.BackupDatabase(inMemConnection, connection.Database, connection.Database);
问题
如上操作,将加密数据库加载到内存会抛异常 SqliteException ,提示信息:
backup is not supported with encrypted databases.
解决
将带有空密码的可分享内存数据库,加载到加密的数据库,然后使用sqlcipher_export,将数据解密保存到内存数据库中,最后将加密数据库卸载, 你就可以愉快的使用内存数据库了, 但是内存数据库是不支持加密的。
var connectionString = new SqliteConnectionStringBuilder("Data Source=encrypted.db")
{
Mode = SqliteOpenMode.ReadWriteCreate,
Password = "somePassword"
}.ToString();
var connection = new SqliteConnection(connectionString);
connection.Open();
var query = "ATTACH DATABASE 'file:InMemorySample?mode=memory&cache=shared' AS inMemDb KEY ''; SELECT sqlcipher_export('inMemDb'); DETACH DATABASE inMemDb;";
using var cmd = new SqliteCommand(query, connection);
var res = cmd.ExecuteNonQuery();
connection.Close();
var inMemConnectionString = new SqliteConnectionStringBuilder("Data Source=InMemorySample;Mode=Memory;Cache=Shared")
{
Mode = SqliteOpenMode.ReadWriteCreate
}.ToString();
var inMemConnection = new SqliteConnection( inMemConnectionString );
inMemConnection.Open();
边栏推荐
- 线程中断方法
- 剑指offer(一)
- Run the NPM will pop up to ask "how are you going to open this file?"
- 04-SDRAM:读操作(突发)
- 磁盘和储存管理
- Gradle剔除依赖演示
- Exam Questions Previous True Questions Wrong Bills [The Fourth Session] [Provincial Competition] [Group B]
- ls的用法
- 零样本学习&Domain-aware Visual Bias Eliminating for Generalized Zero-Shot Learning
- Postgresql source code learning (33) - transaction log ⑨ - see the overall process of log writing from the insert record
猜你喜欢
随机推荐
shell的脚本的基本用法
LeetCode刷题——摆动序列#376#Medium
R——避免使用 col=0
Web浏览器工作流程解析
讲解实例+详细介绍@Resource与@Autowired注解的区别(全网最全)
Gradle remove dependency demo
LeetCode brush # 376 # Medium - swing sequence
【云原生】-Docker安装部署分布式数据库 OceanBase
Install the gstreamer development dependency library to the project sysroot directory
Chapter 17: go back to find the entrance to the specified traverse, "ma bu" or horse stance just look greedy, no back to search traversal, "ma bu" or horse stance just look recursive search NXM board
postgresql源码学习(33)—— 事务日志⑨ - 从insert记录看日志写入整体流程
Gradle剔除依赖演示
cp 的用法
文本三剑客之e`grep,seq文本编辑工具
试题 历届真题 错误票据【第四届】【省赛】【B组】
FTP服务与配置
关于求反三角函数的三角函数值
【Star项目】小帽飞机大战(七)
银河麒麟v10 sp1 安装 PostgreSQL 11.16
编辑时过滤当前节点及根据限制的层数过滤数据









