C# winform讀寫Access資料庫簡單示例
最近在做使用C#訪問Access資料庫的專案,之前沒有使用過Access,所以中間查了不少資料,對相關操作有了一個簡單的印象。本文簡單介紹如何使用C#讀取Access資料,並將修改重新儲存回Access。
開發環境(winform):
1. visual studio 2019
2. .net framework 4.7.2
3. access 2007
4. access資料表tn_member,表結構內容如下圖:
幾個類介紹:
1. OleDBConnection:表示與資料來源的開放連線,這個類就像access資料庫與外部的一個介面,外部程式的操作都通過此介面
2.OleDbDataAdapter:用於從access資料來源檢索資料並填充 DataSet 中的表,同時 DataAdapter 還將對 DataSet 的更改解析回資料來源。
3.OleDbCommandBuilder:自動生成用於協調所做的更改命令,它能夠根據OleDbDataAdapter的SelectCommand屬性自動的生成InsertCommand,UpdateCommand與DeleteCommand等命令。
它們的關係可以用下圖表示:
讀寫流程:
1. 使用連線字串,構造OleDbConnection物件,同時呼叫open方法開啟連線
2. 使用connection物件,構造OleDbDataAdapter介面卡物件
3. 構造OleDbCommandBuilder物件,並將此物件和OleDbDataAdapter介面卡物件關聯
4. 使用OleDbDataAdapter介面卡物件填充DataTable或將變動儲存到Access資料庫
具體例項程式碼如下:
publicpartialclassForm1:Form { //連線字串 privatestringconnStr=@"Provider=Microsoft.ACE.OLEDB.12.0;JetOLEDB:DataBasePassword=;DataSource=E:\db\data.accdb;"; //宣告 privateOleDbConnectionconn=null; privateOleDbDataAdapteradapter=null; privateDataTabledt=null; publicForm1() { InitializeComponent(); } privatevoidbtn_read_Click(objectsender,EventArgse) { //連線資料庫,需要傳遞連線字串 conn=newOleDbConnection(connStr); //開啟資料庫連線 conn.Open(); //"Select*fromtn_member"為SQL語句,意思是從資料庫中選擇叫做“tn_member”的表,“conn”為連線 adapter=newOleDbDataAdapter("Select*fromtn_member",conn); //CommandBuilder對應的是資料介面卡,需要傳遞引數 varcmd=newOleDbCommandBuilder(adapter); //在記憶體中建立一個DataTable,用來存放、修改資料庫表 dt=newDataTable(); //通過介面卡把表的資料填充到記憶體dt adapter.Fill(dt); //把資料顯示到介面 dataGridView1.DataSource=dt.DefaultView; } privatevoidbtn_write_Click(objectsender,EventArgse) { try { //按下按鈕後,把記憶體中修改的部分傳遞給介面卡,再通過介面卡傳遞給資料庫 adapter.Update(dt); //清除記憶體中存放的表資料 dt.Clear(); //重新讀取已經改變過的表資料 adapter.Fill(dt); } catch(Exceptionex) { MessageBox.Show(ex.Message); } finally { } } }
執行程式碼,點選讀取access按鈕,讀取資料,如下圖:
然後修改name欄位的值,點選寫access按鈕,可以看到結果如下:
winform介面:
access資料表: