2016年4月8日 星期五

[ C# ] SQLite連線使用

C# SQLite連線使用



SQLite簡單來說就是一個小型資料庫,不需要任何安裝就可以使用,個人覺得有點不需安裝的Excel感覺

另外編輯SQLite資料庫我是使用 SQLiteDatabaseBrowserPortable這個軟體,不過上網看也滿多推薦用火狐的SQLite Manager



然後開始C#程式部分



收先先到官網下載對應的.NET版本
(我是下載Precompiled Binaries for 64-bit Windows (.NET Framework 4.5))




下載完裡面有範例程式,然後我們需要的是這幾個dll檔案,把他解壓縮到一個你找的到的目錄即可

SQLite.Designer.dll
SQLite.Interop.dll
System.Data.SQLite.dll
System.Data.SQLite.EF6.dll
System.Data.SQLite.Linq.dll

接著開始寫程式吧新建一專案,把上面所有的dll丟到bin/Debug裡頭,並在專案加入參考的dll
選擇專案點右=>加入=>參考=>瀏覽=>然後選擇上面灰底的三個dll加到專案



畫面部分先新增一個button和一個datagridview ,點兩下Button進入編輯




按下按鈕後,首先檢查DB檔案是否存在,然後OpenSQLite資料庫,接著卻認table username是否已經建立,沒有的話就建立一個username的table,然後新增一筆資料
最後Select username並把資料show在datagridview中


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SQLite;
using System.IO;

namespace SQLite_Exercise {
    public partial class Form1 : Form {

        private SQLiteConnection sqlite_conn;   //宣告connection事件
        private SQLiteCommand sqlite_cmd;       //宣告Command-line事件

        public Form1() {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e) {
            string sFName = @"SQLite_Exercise.db";
            if (File.Exists(sFName)) {
                string dbConnection = "Data Source=" + sFName;
                sqlite_conn = new SQLiteConnection(dbConnection);
                try {
                    sqlite_conn.Open();
                    sqlite_cmd = sqlite_conn.CreateCommand();
                    MessageBox.Show("Connect OK");


                    sqlite_cmd.CommandText = "SELECT name FROM sqlite_master WHERE type='table' AND name='username';";
                    using (SQLiteDataReader check_table = sqlite_cmd.ExecuteReader()) {
                        if (!check_table.HasRows) {
                            check_table.Close();
                            sqlite_cmd.CommandText = "CREATE TABLE IF NOT EXISTS username (id integer primary key, name varchar(20));";
                            sqlite_cmd.ExecuteNonQuery();
                        }
                    }
                    
                    int sid = 0;
                    sqlite_cmd.CommandText = "select id from username order by id desc limit 1";
                    using (SQLiteDataReader Sid = sqlite_cmd.ExecuteReader()) {
                        while (Sid.Read()) { sid = int.Parse(Sid["id"].ToString()) + 1; }
                    }
                    sqlite_cmd.CommandText = "INSERT INTO username (id, name) VALUES ('" + sid + "', 'Steven');";
                    sqlite_cmd.ExecuteNonQuery();


                    //查詢資料並丟到datagridview
                    string strSQL = "select * from username";
                    SQLiteDataAdapter sda = new SQLiteDataAdapter(strSQL, sqlite_conn);
                    DataTable dt = new DataTable();
                    sda.Fill(dt);
                    dataGridView1.DataSource = dt;

                }
                catch (Exception ex) {
                    MessageBox.Show("" + ex.Message);
                }
            }
            else
                MessageBox.Show("Can't find db file");
        }
    }
}





本人也才剛接觸C# 自己也有很多地方不懂得
只是為自己整理記錄一下使用過的東西


原始碼下載










2 則留言:

  1. 感謝分享.

    dll 部份如果使用 NuGet , 可能會比較好喔.

    回覆刪除
  2. 恩恩! 我現在也都直接改用NuGet安裝
    快速又方便!!~~~

    回覆刪除