前往
大廳
主題

Window Form開啟資料庫

艾倫D索妮雅 | 2022-05-01 18:07:57 | 巴幣 2 | 人氣 1279

最近因工作關係要寫一個能開啟資料庫並顯示裡面內容的程式
方法不限,語言不限,所以我這裡就直接用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排列資料


創作回應

Subuki乃哥
https://truth.bahamut.com.tw/s01/202305/4a0976fa415f69228079e52112f811e3.JPG
2023-05-05 10:15:38
Subuki乃哥
想請問一下這樣是哪裡有問題,再麻煩您撥空回答
2023-05-05 10:16:17

相關創作

更多創作