WinForm中從SQLite數據庫獲取數據顯示到DataGridView


1.關於Sqlite   

  Sqlite是一款開源的、適合在客戶端和嵌入式設備中使用的輕量級數據庫,支持標准的SQL。

  不像SqlServer或Oracle的引擎是一個獨立的進程、通過TCP或命名管道等與程序進行通信,SQLite卻是作為程序的一個部件、一個構成部分,使用Sqlite的方式就是直接在程序中進行API調用。

2.Sqlite資源鏈接

        Sqlite官網:可以從官網下載源碼、或下載已經編譯好的二進制版本。支持的系統包括:Linux、MacOS、Windows、.NET。

3.在.NET中使用Sqlite

  從官網下載.NET版本的Sqlite,其主要包括兩個dll:SQLite.Interop.dll、System.Data.SQLite.dll。

(1)System.Data.SQLite.dll是一個標准的托管dll,我們可以直接在.NET項目中引用並使用它,就像使用.NET自帶的System.Data命名空間中的各個對象一樣。

(2)SQLite.Interop.dll是一個非托管的dll,是Sqlite引擎核心,我們需要將其拷貝到運行目錄下,在運行時,它會被System.Data.SQLite.dll調用。
 

4.Winform中使用SQLite

(1)可使用northwindEF.db測試數據庫,也可以新建一個數據庫。
(2)Winform界面:

使用ComboBox:cboTables加載數據庫表。

點擊OK,查詢選擇的表中的詳細信息顯示到DataGridView:grdDetail。
 
(3)代碼說明
Step 1. 添加引用 System.Data.SQLite. 注意需要復制SQLite.Interop.dll至運行目錄下;
Step 2. 定義變量
public partial class Form1 : Form
    {
        SQLiteConnection mConn;
        SQLiteDataAdapter mAdapter;
        DataTable mTable;
        public Form1()
        {
            InitializeComponent();
        }
  }

Step 3. 連接數據庫,並查找數據庫中表顯示到cboTables        

private void Form1_Load(object sender, EventArgs e)
        {
            //連接數據庫.
            string mDbPath = Application.StartupPath + "/northwind.db";
            //如果數據庫不存在,則自動創建.
            mConn = new SQLiteConnection("Data Source=" + mDbPath);
 
           //打開數據庫文件.
            mConn.Open();
 
            //創建表[Test Table].
            // id        - Unique Counter - Key Field (Required in any table)
            // FirstName - Text
            // Age       - Integer
            using (SQLiteCommand mCmd = new SQLiteCommand
                ("CREATE TABLE IF NOT EXISTS [Test Table] " +
                 "(id INTEGER PRIMARY KEY AUTOINCREMENT, 'FirstName' TEXT, 'Age' INTEGER);",
                 mConn))
            {
                mCmd.ExecuteNonQuery();
            }
           
            
            //獲取數據庫中表.
            //表 "Tables"中字段 "TABLE_NAME" 包含所有表名信息.
            using (DataTable mTables = mConn.GetSchema("Tables")) // "Tables"包含系統表詳細信息;
            {
                for (int i = 0; i < mTables.Rows.Count; i++)
                {
                    cboTables.Items.Add(mTables.Rows[i].ItemArray[mTables.Columns.IndexOf("TABLE_NAME")].ToString());
                }
                if (cboTables.Items.Count > 0)
                {
                    cboTables.SelectedIndex = 0; // 默認選中第一張表.
                }
            }
           
        }

 

Step 4. 選擇cboTables中表名,點擊Ok,獲取該表詳細信息顯示到grdDetail中。
     
private void btnOk_Click(object sender, EventArgs e)
        {
            mAdapter = new SQLiteDataAdapter("SELECT * FROM [" + cboTables.Text + "]", mConn);
            mTable = new DataTable(); // Don't forget initialize!
            mAdapter.Fill(mTable);
 
            // 綁定數據到DataGridView
            grdDetail.DataSource = mTable;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM