https://www.ancii.com/amh64d6g4/

来源:https://www.cnblogs.com/ccky/archive/2020/05/28/12980136.html
-Advertisement-
Play Games

(1):C#讀取DB文件 第一步 下載DLL文件並安裝 DLL下載地址https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 選用版本sqlite-netFx46-setup-bundle-x64-2015-1.0 ...


(1):C#讀取DB文件

第一步 下載DLL文件並安裝

DLL下載地址https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

選用版本sqlite-netFx46-setup-bundle-x64-2015-1.0.112.0.exe,適用框架.NET Framework 4.6(可以根據自己的需要選用)。

下載後,系統預設安裝在C:\Program Files\System.Data.SQLite路徑下,拷貝System.Data.SQLite.dll文件到工程文件目錄下X:/Project/bin/debug。

在解決方案資源管理器中,選擇“引用”,右鍵後選擇“添加引用”。

如圖1,在引用管理器側邊欄選擇“瀏覽”後,再點擊“瀏覽”按鈕,安裝之前保存在工程文件目錄下的System.Data.SQLite.dll,點擊“確定”後完成。

【WinForm】雜記(1):C#讀取DB文件

在程式中添加引用, 完成第一步

using System.Data.SQLite;

 

第二步 獲取數據

public DataTable GetDataTable(string strSQL, string path){
    DataTable dt = null;
    try {
        SQLiteConnection conn = new SQLiteConnection(path);
        SQLiteCommand cmd = new SQLiteCommand();
        cmd.CommandText = strSQL;
        cmd.Connection = conn;
        SQLiteDataAdapter dao = new SQLiteDataAdapter(cmd);
        dt = new DataTable();
        dao.Fill(dt);
        return dt;
    }
    catch{
        MessageBox.Show("There is no such a datatable");
    }
    return dt;
}

其中strSQL是獲取db文件中數據表的指令

string sSQL = "SELECT * FROM item_compound;";

這裡的數據表名為"item_compound"。

文件路Path為

public static string DBPath = string.Format(@"Data Source={0}",
                    Application.StartupPath + @"\CCUS_supstr_temp.db");//the path of .db file

這裡的db文件名為“CCUS_supstr_temp.db”。

第三步 測試代碼

private void FrmConvert_Load(object sender, EventArgs e){
    string sSQL = "SELECT * FROM item_compound;";
    DataTable dbt = GetDataTable(sSQL, DBPath);
    this.dataGridView1.DataSource = dbt;
}

結果如圖2

【WinForm】雜記(1):C#讀取DB文件

 

 

 

 

2):C#操作SQLite資料庫(總結)

操作功能列表:

  • 功能1:讀取所有表名/索引/視圖
  • 功能2:讀取表數據

功能1:讀取所有表名/索引/視圖

每一個 SQLite 資料庫都有一個叫sqlit_master的表, 裡面存儲著資料庫的數據結構(表結構、視圖結構、索引結構等)。故通過讀取sqlit_master便可以獲取所有的表格信息。

獲取表名

SELECT name FROM sqlite_master WHERE TYPE=‘table‘ ORDER BY name

獲取索引

SELECT name FROM sqlite_master WHERE TYPE=‘index‘ ORDER BY name  

獲取視圖

SELECT name FROM sqlite_master WHERE TYPE=‘view‘ ORDER BY name

以獲取表名為例,完整代碼為

public DataSet GetTableNames(string path) {
    string strSQL = "SELECT name FROM sqlite_master WHERE TYPE=‘table‘ ORDER BY name";
    DataSet ds = null;
    try {
        SQLiteConnection conn = new SQLiteConnection(path);
        SQLiteCommand cmd = new SQLiteCommand(strSQL, conn);
        SQLiteDataAdapter reciever = new SQLiteDataAdapter(cmd);
        ds = new DataSet();
        reciever.Fill(ds);
        return ds;
    } catch {
        MessageBox.Show("There is no data table");
    }
    return ds;
}16 DataSet dbnames = GetTableNames(DBPath);

註意此時返回的ds包含的元素數量只有一個,所有表名以列向量的形式存儲在一張表中(即ds唯一的元素)。

讀取表數量的代碼為

int tablecount = dbnames.Tables[0].Rows.Count;

讀取索引為X的表名

string tablename = dbnames.Table[0].Rows[X].ItemArray[0].ToString();//X starts from 0

 

功能2:讀取表數據

public DataTable GetDataTable(string strSQL, string path){
    DataTable dt = null;
    try {
        SQLiteConnection conn = new SQLiteConnection(path);
        SQLiteCommand cmd = new SQLiteCommand(strSQL,conn);
        SQLiteDataAdapter reciever = new SQLiteDataAdapter(cmd);
        dt = new DataTable();
        reciever.Fill(dt);
        return dt;
    } catch{
        MessageBox.Show("There is no such a datatable");
    }
    return dt;
}

  其中strSQL是獲取db文件中數據表的指令

string sSQL = "SELECT * FROM item_compound;";

這裡的數據表名為"item_compound"。

文件路Path為

public static string DBPath = string.Format(@"Data Source={0}",
                    Application.StartupPath + @"\CCUS_supstr_temp.db");//the path of .db file  

這裡的db文件名為“CCUS_supstr_temp.db”。

 

 

 

 

 

 

 

 

 

 

 

 

 

轉載自

https://www.ancii.com/ac9q53gmx/

 https://www.ancii.com/amh64d6g4/

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先在用戶表定義一個積分欄位; 然後創建一個等級表,主要欄位有等級名,上限積分和下限積分; 再根據用戶的行為進行積分累加; 最後根據判斷用戶積分在哪個等級範圍,從而得出用戶等級。 用戶表 CREATE TABLE `bbs`.`user`( `id` INT(10) UNSIGNED NOT NUL ...
  • Java多線程面試問題 1. 進程和線程之間有什麼不同? 一個進程是一個獨立(self contained)的運行環境,它可以被看作一個程式或者一個應用。而線程是在進程中執行的一個任務。Java運行環境是一個包含了不同的類和程式的單一進程。線程可以被稱為輕量級進程。線程需要較少的資源來創建和駐留在進 ...
  • 使用場景:新頭像替換舊的頭像 步驟: 1. 讀取資料庫頭像的URL地址 2. 獲取URL地址的有效欄位 3. file文件路徑設置 4. 刪除圖片文件 Thinkphp 代碼如下: <?php public function delPic(){ //獲取用戶id $uid = input('uid' ...
  • Java這門語言的發展是很有意思的,它不像Python, Ruby 等完全是開源社區驅動,也不像C#,VB.NET主要由微軟操刀。它是一個以Oracle(之前是Sun)為主,各大巨頭一起參與,一起制定標準的一門語言。 想對Java添加一點特性, 得走JCP流程,巨頭們要審查,看看對自己是否有利,然後 ...
  • Blazor編譯後的文件是靜態文件,所以我們只需要一個支持靜態頁面的web server即可。 根據不同項目,會用不同的容器編排,本文已無網關的情況下為例,一步一步展示如何打包進docker 需求 HTTPS 既然無網關,直接面向互聯網,所以HTTPS顯得尤為重要 HTTP/2 TLS3.0 既然都 ...
  • C#編碼轉換主要使用了Encoding.Convert方法,它需要原編碼字元串的位元組數組作為參數,返回目標編碼的位元組數組。Encoding對象可以從字元串獲取位元組數組,又能夠從位元組數組還原字元串,因此可以將其組合用來轉碼。 ...
  • k8s 和 Docker容器技術,當前非常流行的技術. 讓人日狗的是, 這套技術棧對CN的donet 程式員不怎麼友好。娓娓道來,1. 好多鏡像都是需要梯子才能訪問; 2. window程式員天生對命令行操作陌生。3. 好多資料都是linux 等等..... 下麵我們來一起安裝部署下。 一, 安裝環 ...
  • 0. 前言 在前一篇中我們講到了Dapper的應用,但是給我們的感覺Dapper不像個ORM更像一個IDbConnection的擴展。是的,沒錯。在實際開發中我們經常用Dapper作為對EF Core的補充。當然了Dapper並不僅僅只有這些,就讓我們通過這一篇文章去讓Dapper更像一個ORM吧。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...