当前位置:网站首页>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();
边栏推荐
- Install the gstreamer development dependency library to the project sysroot directory
- Project exercise - memorandum (add, delete, modify, check)
- Basic usage of Koa framework
- 360 push-360 push tool-360 batch push tool
- Oracle入门 03 - Linux / Unix 系统基础知识
- MySQL笔记下
- Database Principles Homework 2 — JMU
- MySQL系列一:账号管理与引擎
- shell之条件语句(test、if、case)
- Gradle剔除依赖演示
猜你喜欢

(border-box)盒子模型w3c、IE的区别

Explain the example + detail the difference between @Resource and @Autowired annotations (the most complete in the entire network)

浅析瀑布流布局原理及实现方式

银河麒麟服务器v10 sp2安装oracle19c

Analysis of pseudo-classes and pseudo-elements

拓扑排序的两种方法 --- dfs+Kahn

Redux state management

自动翻译软件-批量批量自动翻译软件推荐

Oracle入门 04 - Vmware虚拟机安装配置

PXE高效批量网络装机
随机推荐
Project exercise - memorandum (add, delete, modify, check)
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
磁盘管理与文件系统
One of the small practical projects - food alliance ordering system
服务器硬件及RAID配置实战
进程和计划任务管理
(border-box)盒子模型w3c、IE的区别
Moment.js common methods
shell的脚本的基本用法
第十六章:构建n(5,7)阶素数幻方
【TA-霜狼_may-《百人计划》】美术2.3 硬表面基础
MySQL的触发器
shell之条件语句(test、if、case)
外贸网站优化-外贸网站优化教程-外贸网站优化软件
银河麒麟服务器v10 sp1安装.net6
第十七章:回溯探求指定入口的马步遍历,贪心无回溯探求马步遍历,递归探求nxm棋盘带障碍马步遍历
【并发编程】ReentrantLock的lock()方法源码分析
TypeScript编译(tsconfig.json)
Chapter 16: Constructing the Magic Square for Prime Numbers of Order n(5,7)
gstreamer的caps event和new_segment event