C# 讀寫 數據庫、表 窗體顯示代碼實例 最近項目中用到 C# 對于 數據庫表讀寫 .mdb 操作,學習了下相關的東西,這里先整理 C# 對于 數據庫的操作,對于 MySQL 和 數據庫的操作放到后面再寫。 是微軟數據庫編
C#讀寫數據庫、表格窗體顯示代碼實例
最近項目中用到C#對于數據庫表讀寫.mdb操作,學習了下相關的東西,這里先整理C#對于數據庫的操作,對于MySQL和數據庫的操作放到后面再寫。
是微軟數據庫編輯軟件,其生成的數據庫文件為.mdb或.accdb,因此在 里不像操縱MySQL那樣需要使用mysql數據庫驅動c查詢access數據庫,系統庫里有關于操縱數據庫的幾個類。說下其中幾個主要用到的類:
.Data;
.Data.OleDb;
.Data.Odbc;
.Data.;
先簡單說下C#對于數據庫的幾個基本操作原理:
C#操作連接字符串
= "=.Jet.OLEDB.4.0; Data =.mdb";
C#操作建立連接
= new ();
C#操作使用類執行Sql語句
cmd = new (sql, );
.Open();
cmd.();
[1]連接數據庫
conn = new ("=.Jet.OLEDB.4.0; Data =" + . + "\\.mdb");
[2]連接SQL 數據庫
conn = new ("=.; uid=admin; pwd=; =");
[3]受信任的SQL 數據庫
conn = new (" id=; =SSPI; =");
[4]ASP中鏈接SQL /數據庫:(網頁)
(SQL ):
conn. = "={sql }; =(local); uid=admin; pwd=; ="
():
conn. = "={ (*.mdb)}; DBQ=" & .(".mdb")
!!!注意:→在asp中,語句結束不需要" ; "
--------------------------------------------------------------------------------------------------------------------------------------------
一、創建.mdb數據庫
//創建.mdb,注意參數path是.mdb的完整路徑(不包含表的名稱) //C#的ADO.NET不能通過編程方式創建新的ACCESS(MDB)數據庫,所以只能用COM的鏈接庫的ADOX操作 public static bool CreateMdbDatabase(string path) { try { ADOX.CatalogClass cat = new ADOX.CatalogClass(); cat.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + path + ";"); cat = null; return true; } catch { return false; } }
登錄后復制
二、C#寫入記錄到數據庫
Sql插入數據庫操作,一次只能插入一條記錄,多條記錄插入只能通過"循環"實現,效率不高;
或者要么更快地就是開啟事務(保證數據一致性)→循環插入→最后數據再一起導入。
【實例】在Form上創建一個和一個c查詢access數據庫,點擊把中的數據寫入到數據庫中。
1.首先創建一個空數據庫.mdb并寫入相應字段:
2.讀寫數據庫時應當將數據庫關閉,再運行程序進行寫操作
using System.Data.Oledb; private void button1_Click(object sender, EventArgs e) { foreach (IACell cell in m_DistributedCells) { //把cell.FrequencyBand、cell.UlFrequency、cell.DlFrequency全部寫入數據庫表.mdb里去 //string sql_0 = "insert into table (column1,column2) values('" + textbox.Text + "','" + textbox.Text +"')"; //構造sql語句 string sql = ""; if (cell.ChannelIndex == 1) { sql = "insert into datawrite(ChannelIndex, BandWidth, StartChIndex, EndChIndex, ExcludedChannels, UlFrequency, DlFrequency, ACIR) values('" + 1 + "','" + 20 + "','" + 0 + "','" + 1 + "','" + 1 + "','" + 2402 + "','" + 2422 + "','" + 0 + "')"; } else if (cell.ChannelIndex == 6) { sql = "insert into datawrite(ChannelIndex, BandWidth, StartChIndex, EndChIndex, ExcludedChannels, UlFrequency, DlFrequency, ACIR) values('" + 6 + "','" + 20 + "','" + 5 + "','" + 6 + "','" + 6 + "','" + 2427 + "','" + 2447 + "','" + 0 + "')"; } else if (cell.ChannelIndex == 11) {sql = "insert into datawrite(ChannelIndex, BandWidth, StartChIndex, EndChIndex, ExcludedChannels, UlFrequency, DlFrequency, ACIR) values('" + 11 + "','" + 20 + "','" + 10 + "','" + 11 + "','" + 11 + "','" + 2452 + "','" + 2472 + "','" + 0 + "')"; } //access數據庫路徑,注意一定是雙斜杠\\,否則會被當成轉義字符! string dbpath = "D:\\data\\datainput.mdb"; //定義數據庫連接對象 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + dbpath); OleDbCommand cmd = new OleDbCommand(sql, con); //定義Command對象 con.Open(); //打開數據庫連接 cmd.ExecuteNonQuery(); //執行Command命令 con.Close(); //關閉數據庫連接 } }
登錄后復制
運行程序,點擊后(斷點只循環1次),再次打開剛才的數據庫表,此時表里已插入1條記錄。
三、讀出數據庫的值——C#界面顯示表格
【實例】將現有數據庫表格內的數據以的形式顯示在C#窗體中。
1.現有的數據庫,50條記錄。
2.代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; //主要是這個東西,其實已經包含在System.Data類里了,這里特別提出來注明下 namespace text01 { public partial class Form1 : Form { public Form1() { InitializeComponent(); OleDbConnection thisConnection = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\dataread.mdb"); string sql = "select * from dataread"; OleDbDataAdapter thisAdapter = new OleDbDataAdapter(sql, thisConnection); System.Data.DataSet thisDataSet = new System.Data.DataSet(); thisAdapter.Fill(thisDataSet, "table"); DataTable dt = thisDataSet.Tables["table"]; this.dataGridView1.DataSource = dt; thisConnection.Close(); } } }
登錄后復制
效果圖: