最近因工作關係要寫一個能開啟資料庫並顯示裡面內容的程式
方法不限,語言不限,所以我這裡就直接用Window Form來做
因為要開啟的資料庫是Access的關係,所以就只分享Access的方法了
這邊隨便建一個Access來當範例
一. 開啟Window Form 專案
二. 連接資料庫,依以下步驟走就可以了
Ctrl+Q搜尋資料,找到資料來源
點擊後左欄會出現資料來源的欄位,然後點選
選資料庫,連2次下一步
點新增連結,然後在資料來源選Access
然後點瀏覽,然後選要連接的Access檔案,選完後按確定
然後把下面顯示要儲存在應用程式中的連接字串打勾
之後就一直下一步到下面畫面
把能打勾的全打勾,然後完成
之後再左欄看到成功導進的Access資料表就算成功了
三. 設計Window Form
到工具箱把DatagridView拉進來,做為要顯示資料表畫面
把Anchor調成上下左右(這樣才可以跟著視窗調整大小)
然後做一個可以選擇要看哪個資料表的ComboBox
下面再多做一個可以拿來輸入搜尋的TextBox
四. 取得Access中資料表
設計完成後就開始進行程式碼編寫了
首先先做一個讀取資料表的Function,這邊取名為LoadingTablelist()
大致程式碼如下:
首先要先開啟資料庫,方法如下
先建立一個連線物件
OleDbConnection Dbconnect = new OleDbConnection();
在使用前要先加using System.Data.OleDb;
之後使用物件中ConnectionString連接App.config中的資料庫設定
寫法:
Dbconnect.ConnectionString = ConfigurationManager.ConnectionStrings["ShowAccessDataBase.Properties.Settings.MyDataBaseConnectionString"].ToString();
其中ConnectionStrings中的[ ]為App.config中<add name>
另外要注意的是在使用ConfigurationManager時要先去參考那邊右鍵,加入參考
選擇System.configuration
開啟完之後,記得在上面要加using System.Configuration;
這樣才可以使用ConfigurationManager來讀取app.config中的設定
以上都做完後用Open()取得資料庫內容
Dbconnect.Open();
接下來要來取得Access中資料表:
DataTable schemaData = Dbconnect.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });
//每個schemaData.Row[]中都是一個資料表,["TABLE_NAME"]可以取得資料表名稱
//取得後加進comboBox中的選單中,即可使用
for(int i = 0; i < schemaData.Rows.Count; i++)
{
comboBox1.Items.Add(schemaData.Rows[i]["TABLE_NAME"].ToString());
}
寫完後記得將function加入form_load()中
這樣comboBox即可列出Access中的所有資料表了
更新-
法二.另一種寫法
//上面conn改成Dbconnect,tables改成schemaData
可以使用
DataTable schemaData = Dbconnect.GetSchema("Tables");
取得schema表中的所有table
之後再建一個矩陣List<string> sheets 來存放所有Table名稱
而Table名稱位在schemaData.Rows[陣列]["TABLE_NAME"]
所以建立一個迴圈
for(int i = 0; i<sheets.Count; i+=1)
sheets[i].Add(tables.Rows[i]["TABLE_NAME"].ToString()); //記得要轉乘string型態
然後把sheets放進combobox裡面
for(int i = 0; i<sheets.Count; i+=1)
comboBox1.Item.Add(sheets[i]);
五.顯示資料表
新建一個function用來開啟資料表,名稱LoadingGrid()
程式碼如下
前三行同上,用來開啟資料庫的寫法,不多做贅述
開啟後要做一個sql指令,用來命令要對此資料庫做甚麼動作
寫法:
OleDbCommand Dbcmd = new OleDbCommand();
Dbcmd.CommandText = "select * from ["+ViewTable+"]"; //sql指令
Dbcmd.Connection = Dbconnect;
OleDbDataAdapter DataAdapter = new OleDbDataAdapter(Dbcmd);
DataSet ds = new DataSet();
DataAdapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0]; //datagridview上顯示資料表
sql指令的部分通常會先寫 select * from [資料表],來顯示所有資料表內容
而目前comboBox已有所有Access資料表名稱
故現在只要再做一個ViewTable的變數來取得comboBox中的text就可以取得要用的資料表
在button上把comboBox中的值給ViewTable,最後呼叫LoadingGrid()
之後只要按下開啟的按鈕,即可顯示資料表
六. 加入搜尋條件
接下來步驟比較簡單,只要想辦法去調整Dbcmd.CommandText這部分即可
首先先建立一個變數用來寫條件
然後把SearchCmd加進CommandText指令中
記得要寫進CommandText後要清空SearchCmd中的指令,以避免不必要的錯誤
然後在搜尋按鈕的button上寫把搜尋條件的textbox文字加進SearchCmd中
順便加個例外判定
測試結果:
選出Game Name開頭是D的資料
依Date Time排列資料