LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

【C#.net】SQLite数据库入门:创建、访问和加密数据库

admin
2025年1月26日 9:40 本文热度 362
SQLite是一个极其轻量化的数据库系统,它使用起来非常简单,无需安装和配置服务器,程序直接从磁盘的数据库文件上读取数据即可。特别适合手机应用或小型的桌面软件使用。下面来详细介绍如何使用SQLite。

一、下载sqlite并配置环境变量
如果要在本地创建一个sqlite数据库文件,首先要下载sqlite程序,可以在官方网站上下载,下载地址:https://www.sqlite.org/download.html。如果你使用的是windows 64位系统,就选择下图中的第2、3项下载,下载后将文件解压到指定文件夹下,例如解压到D:\SQLite文件夹里。
在环境变量的系统变量中的path里添加一个路径:D:\SQLite,即sqlite3.exe文件所在的路径。添加环境变量后,在命令行里输入:sqlite3,出现如下图所示的提示,说有配置成功。
二、相关工具下载
虽然不需要借助其它工具也可以在命令行里直接使用sqlite,但是这种操作方式不怎么友好,特别是对于初学者。目前有许多辅助工具使得操作sqlite更为方便,例如SQLiteSpy、sqlcipher等等。如果需要这些工具,可以自行百度搜索获取。
三、创建数据库、数据表和数据记录
使用SQLiteSpy可以很方便地创建一个数据库,如下图所示,点击Fileànew Database就会弹出选择数据库保存的文件夹和名称的对话框,选择路径,并输入数据库名称,例如mydatabase.db,确定后就已经在指定位置创建好一个数据库。
如果要创建一个数据表,则在右侧的文本框里输入SQL语句,然后选择菜单Execute-->Execute SQL即可。如下图所示:
四、用C#访问sqlite数据库
在visual studio中的nuget程序包管理中搜索并安装Microsoft.Data.Sqlite.Core。
使用下面的代码访问上面数据库中的example数据表
 
 string query = "SELECT * FROM example"; 
 string connectionString = $"Data Source=D:\\SQLite\\testDatabase.db";
 var connection = new SqliteConnection(connectionString);
     connection.Open();
     using (var command = new SqliteCommand(query, connection))
     {
         using (var reader = command.ExecuteReader())
         {
             while (reader.Read())
             {
                 string name = reader.GetString(1); // 或者使用reader["data"]
                 Console.WriteLine($"Name: {name}");
             }
         }
     }
     connection.Close();
 }
四、安全问题
通过上面的操作,我们已经实现了数据库的创建和读写,但是还有一个最重要的问题——安全。用上面的操作方法创建出来的数据库不需要密码就可以查看所有数据,这对于重要的数据显然是不安全的,那应该如何给sqlite数据库加密呢?
首先要在Visual studio中的nuget中安装sqlcipher。
安装好sqlcipher后,找到项目目录下的packages\SQLitePCLRaw.lib.e_sqlcipher.2.1.10\runtimes文件夹,在runtimes文件夹里,有多个子文件夹,需要根据自己电脑的操作系统选择相应文件夹里的e_sqlcipher.dll文件,复制该文件到程序运行的文件夹中去(例如,调试时对应的运行文件夹是bin\debug)。
接下来,用C#代码创建一个带密码的空白数据库文件,然后把已有的未加密的数据库的数据全部搬迁到这个带密码的空白数据库文件中。以下面这个方法实现:
 
 public  void CreateEncryptedDatabase(string plaintextDbPath, string encryptedDbPath, string encryptionKey)
{
    //创建一个新的加密数据库文件
    using (var connection = new SqliteConnection(new SqliteConnectionStringBuilder()
    {
        DataSource = encryptedDbPath,
        Password = encryptionKey
    }.ToString()))
    {
        connection.Open();
       //此处可添加数据库的其余操作
        connection.Close();
    }
    // 连接到原来没有密码的数据库,并导出数据到加密的数据库中去
    using (var connection = new SqliteConnection(new SqliteConnectionStringBuilder()
    {
        DataSource = plaintextDbPath
    }.ToString()))
    {
        connection.Open();
        using (var command = new SqliteCommand($"ATTACH DATABASE '{encryptedDbPath}' AS encrypted KEY '{encryptionKey}';" +
            $"SELECT sqlcipher_export('encrypted');" +
            $"DETACH DATABASE encrypted;", connection))
        {
            command.ExecuteNonQuery();
        }
        connection.Close();
    }
}
通过上面这个方法,就创建出了一个带密码的sqlite数据库文件。访问这个数据库时,可用下面这段示例代码:
 
 public void read(string encryptedDbPath, string encryptionKey)
 {
     string query = "SELECT * FROM example"; // 替换your_table_name为你的表名

     using (var connection = new SqliteConnection(new SqliteConnectionStringBuilder()
     {
         DataSource = encryptedDbPath,
         Password = encryptionKey
     }.ToString()))
     {
         connection.Open();
         using (var command = new SqliteCommand(query, connection))
         {
             using (var reader = command.ExecuteReader())
             {
                 while (reader.Read())
                 {
                            
                     string name = reader.GetString(1); // 或者使用reader["data"]
                     Console.WriteLine($"Name: {name}");
                 }
             }
         }
         connection.Close();
     }
 }
至此,使用SQLite创建、访问和加密数据库的工作就全部完成了。


该文章在 2025/1/26 9:40:53 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved