【技巧篇】SQLite數據庫導入Excel文件、GridControl實現數據庫文件的讀取


目的:由於在用DevExpress開發的時候,使用的表格控件需要讀取數據,所以,就需要獲得相應的數據文件。

1.將Excel導成數據庫文件

  • 打開Excel,將其列整理好(比如合並的列要拆開,標題單元格刪除),然后另存為.csv文件即可(UTF-8編碼)。
  • 打開SQLite的可視化管理工具——Navicat,新建一個連接,如果還沒有數據庫文件,就選擇New SQLite 3,然后選擇數據庫文件的存儲位置。
  • 打開數據庫的那棵樹,在Table上右擊選擇Import Wizard,然后就可以一步一步選擇之前的.csv文件將其制成一張新表了。
    至此,數據庫已經完成建立。

2.導入SQLite的插件

網上有很多方法,但是官網下載什么的都沒有必要,直接右擊reference,選擇Manage Nuget packages,然后在線搜索SQLite

這些就是需要安裝的插件,其實安裝第一個,其他的就會給你打包裝好的。

2.進行窗體的開發

  • 在窗體中選擇GridControl控件,然后進行一些列的設計,記住FieldName就是之后連接數據表的列名。
  • 然后轉到這個窗體的代碼文件上來。
    除了主要的命名空間外,需要使用這些命名空間:
using System.Data;
using System.Data.SQLite;

主要的代碼:

 private void gridControl1_Load(object sender, EventArgs e)
        {
            //添加數據源
            BuildDataSource();

        }
        private void BuildDataSource()
        {
            //連接數據庫
            config c = new config();
            c.DataSource = @"F:\TMEor\TMEor\TMEor\bin\Debug\databaseSource.db";
            SQLiteConnection conn = new SQLiteConnection();
            conn.ConnectionString = c.DataSource;
            conn.Open();
            SQLiteCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select * from databaseSource";
            SQLiteDataReader reader = cmd.ExecuteReader();
            //新建DataTable存儲查詢到的數據
            DataTable dt = new DataTable();
            dt.Columns.Add("選擇", typeof(bool));
            dt.Columns.Add("序號", typeof(string));
            dt.Columns.Add("加工內容", typeof(string));
            dt.Columns.Add("刀具分類", typeof(string));
            dt.Columns.Add("描述", typeof(string));
            dt.Columns.Add("刀具直徑", typeof(string));
            dt.Columns.Add("刀柄夾持直徑", typeof(string));
            dt.Columns.Add("刀具長度", typeof(string));
            dt.Columns.Add("轉速", typeof(string));
            dt.Columns.Add("進給", typeof(string));
            dt.Columns.Add("冷卻液壓力", typeof(string));
            dt.Columns.Add("刀柄類型", typeof(string));
            dt.Columns.Add("國產供應商", typeof(string));
            dt.Columns.Add("進口供應商", typeof(string));
            dt.Columns.Add("刀具狀態", typeof(string));
            dt.Columns.Add("錄入時間", typeof(string));
            dt.Columns.Add("錄入人員", typeof(string));
            dt.Columns.Add("數量", typeof(string));
            dt.Columns.Add("最大壽命", typeof(string));
            dt.Columns.Add("剩余壽命", typeof(string));
            dt.Columns.Add("備注", typeof(string));
            
            while (reader.Read())
            {
                dt.Rows.Add(new object[] {false, reader[0].ToString(), reader[1].ToString(), reader[2].ToString(), reader[3].ToString(), reader[4].ToString(), reader[5].ToString(),
                reader[6].ToString(), reader[7].ToString(), reader[8].ToString(), reader[9].ToString(), reader[10].ToString(), reader[11].ToString(), reader[12].ToString(),
                reader[13].ToString(), reader[14].ToString(), reader[15].ToString(), reader[16].ToString(), reader[17].ToString(), reader[18].ToString(), null});
            }
            conn.Close();
            gridControl1.DataSource = dt;
        }

然后是使用的一個config類:(用於獲取數據源文件)

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SQLite;

namespace TMEor
{
    public class config
    {
        private string DatabaseFile = "";
        public string DataSource
        {
            set
            {
                DatabaseFile = value;
            }
            get 
            { 
                return string.Format("Data Source={0}", DatabaseFile); 
            }
        }
    }
}

備注:
在讀取數據文件(while(reader.Read())的時候,循環體里面讀取數據庫表格中的方法也可以是:

reader.GetString(i);//i是列表的索引,和上面的代碼里一樣
reader.GetInt16(i);

諸如此類,這樣有個缺點就是:如果表格中有null值,就會報錯,而上面的方法即使是空值也可以讀取到DataTable中。


免責聲明!

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



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