目的:由於在用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中。
