超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【C#.net】SQLite數(shù)據(jù)庫(kù)入門(mén):創(chuàng)建、訪問(wèn)和加密數(shù)據(jù)庫(kù)

admin
2025年1月26日 9:40 本文熱度 2916
SQLite是一個(gè)極其輕量化的數(shù)據(jù)庫(kù)系統(tǒng),它使用起來(lái)非常簡(jiǎn)單,無(wú)需安裝和配置服務(wù)器,程序直接從磁盤(pán)的數(shù)據(jù)庫(kù)文件上讀取數(shù)據(jù)即可。特別適合手機(jī)應(yīng)用或小型的桌面軟件使用。下面來(lái)詳細(xì)介紹如何使用SQLite。

一、下載sqlite并配置環(huán)境變量
如果要在本地創(chuàng)建一個(gè)sqlite數(shù)據(jù)庫(kù)文件,首先要下載sqlite程序,可以在官方網(wǎng)站上下載,下載地址:https://www.sqlite.org/download.html?。如果你使用的是windows 64位系統(tǒng),就選擇下圖中的第2、3項(xiàng)下載,下載后將文件解壓到指定文件夾下,例如解壓到D:\SQLite文件夾里。
在環(huán)境變量的系統(tǒng)變量中的path里添加一個(gè)路徑:D:\SQLite,即sqlite3.exe文件所在的路徑。添加環(huán)境變量后,在命令行里輸入:sqlite3,出現(xiàn)如下圖所示的提示,說(shuō)有配置成功。
二、相關(guān)工具下載
雖然不需要借助其它工具也可以在命令行里直接使用sqlite,但是這種操作方式不怎么友好,特別是對(duì)于初學(xué)者。目前有許多輔助工具使得操作sqlite更為方便,例如SQLiteSpy、sqlcipher等等。如果需要這些工具,可以自行百度搜索獲取。
三、創(chuàng)建數(shù)據(jù)庫(kù)、數(shù)據(jù)表和數(shù)據(jù)記錄
使用SQLiteSpy可以很方便地創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),如下圖所示,點(diǎn)擊Fileànew Database就會(huì)彈出選擇數(shù)據(jù)庫(kù)保存的文件夾和名稱(chēng)的對(duì)話框,選擇路徑,并輸入數(shù)據(jù)庫(kù)名稱(chēng),例如mydatabase.db,確定后就已經(jīng)在指定位置創(chuàng)建好一個(gè)數(shù)據(jù)庫(kù)。
如果要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)表,則在右側(cè)的文本框里輸入SQL語(yǔ)句,然后選擇菜單Execute-->Execute SQL即可。如下圖所示:
四、用C#訪問(wèn)sqlite數(shù)據(jù)庫(kù)
在visual studio中的nuget程序包管理中搜索并安裝Microsoft.Data.Sqlite.Core。
使用下面的代碼訪問(wèn)上面數(shù)據(jù)庫(kù)中的example數(shù)據(jù)表
 
 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();
 }
四、安全問(wèn)題
通過(guò)上面的操作,我們已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的創(chuàng)建和讀寫(xiě),但是還有一個(gè)最重要的問(wèn)題——安全。用上面的操作方法創(chuàng)建出來(lái)的數(shù)據(jù)庫(kù)不需要密碼就可以查看所有數(shù)據(jù),這對(duì)于重要的數(shù)據(jù)顯然是不安全的,那應(yīng)該如何給sqlite數(shù)據(jù)庫(kù)加密呢?
首先要在Visual studio中的nuget中安裝sqlcipher。
安裝好sqlcipher后,找到項(xiàng)目目錄下的packages\SQLitePCLRaw.lib.e_sqlcipher.2.1.10\runtimes文件夾,在runtimes文件夾里,有多個(gè)子文件夾,需要根據(jù)自己電腦的操作系統(tǒng)選擇相應(yīng)文件夾里的e_sqlcipher.dll文件,復(fù)制該文件到程序運(yùn)行的文件夾中去(例如,調(diào)試時(shí)對(duì)應(yīng)的運(yùn)行文件夾是bin\debug)。
接下來(lái),用C#代碼創(chuàng)建一個(gè)帶密碼的空白數(shù)據(jù)庫(kù)文件,然后把已有的未加密的數(shù)據(jù)庫(kù)的數(shù)據(jù)全部搬遷到這個(gè)帶密碼的空白數(shù)據(jù)庫(kù)文件中。以下面這個(gè)方法實(shí)現(xiàn):
 
 public  void CreateEncryptedDatabase(string plaintextDbPath, string encryptedDbPath, string encryptionKey)
{
    //創(chuàng)建一個(gè)新的加密數(shù)據(jù)庫(kù)文件
    using (var connection = new SqliteConnection(new SqliteConnectionStringBuilder()
    {
        DataSource = encryptedDbPath,
        Password = encryptionKey
    }.ToString()))
    {
        connection.Open();
       //此處可添加數(shù)據(jù)庫(kù)的其余操作
        connection.Close();
    }
    // 連接到原來(lái)沒(méi)有密碼的數(shù)據(jù)庫(kù),并導(dǎo)出數(shù)據(jù)到加密的數(shù)據(jù)庫(kù)中去
    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();
    }
}
通過(guò)上面這個(gè)方法,就創(chuàng)建出了一個(gè)帶密碼的sqlite數(shù)據(jù)庫(kù)文件。訪問(wèn)這個(gè)數(shù)據(jù)庫(kù)時(shí),可用下面這段示例代碼:
 
 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創(chuàng)建、訪問(wèn)和加密數(shù)據(jù)庫(kù)的工作就全部完成了。


該文章在 2025/1/26 9:40:53 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved