標籤:
平時偶爾因為工作需要得自己寫一些小工具去操作資料庫,因為只是需要實現一些小的功能,也不涉及多類型的資料庫,也許就是一次性的使用。所以此時那些大而全的資料庫操作架構,也就不再那麼適合我了。而本篇博文主要是記錄自己在工作中主要使用的幾種方式進行,歸納與匯總。
一、目的。
1、瞭解資料庫操作的基本步驟。
2、瞭解使用ODBC的方式進行資料庫的基本操作。
3、瞭解使用OleDb的方式進行資料庫的基本操作。
4、瞭解使用資料庫廠商提供的資料庫操作類庫的方式進行資料庫操作。
二、基本原理與過程。
1、一般我們操作資料庫主要設計的幾個步驟基本上是固定的。
1、建立資料庫連接
2、建立資料庫命令並且設定相關參數
3、執行資料庫命令擷取返回結果
4、關閉資料庫連接
2、預備內容(因為涉及的文後使用的ODBC的方式使用的DSN,需要配置預先配置下ODBC)
要想使用DB2資料庫的ODBC必須得自己安裝對應的驅動程式。微軟只為自己的資料庫和Oracle的資料庫提供了預設就安裝的驅動程式。具體的驅動下載和安裝可以自己百度得之。
給資料來源填寫上有意義的命名之後,如果在下拉框中沒有你的資料庫的話,直接點擊添加即可。
DB2的預設連接埠號碼50000,如果你不清楚自己是否修改過預設的連接埠號碼的話,你可以通過在db2的執行個體中輸入db2 get dbm cfg 命令,找到你自己對於的連接埠資訊即可。
3、使用ODBC的方式進行資料庫的基本操作。
C#中的System.Data.Odbc命名空間提供了很多整合好了的資料庫操作類。
第一步、使用OdbcConnection 建立與資料庫的串連。
通過使用指定的連接字串,建立對應的資料庫連接即可。
"Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;"
"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes"
"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\Northwind.mdb"
"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls"
"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin"
"DSN=dsnname"
上面的幾個樣式是微軟的MSDN上給出的相應的配置方法。最簡單的方式就是使用最後面的一種。因為我在使用時,都會建立好相應的DSN。
第二步、建立資料庫命令並且設定相關的參數。
最普通的方法是使用時建立 OdbcCommand類的執行個體,這個類可以執行SQL語句或預存程序。通過使用兩個參數執行個體化這個類的方法。
OdbcCommand(String, OdbcConnection) 第一個參數確定了需要執行的SQL或預存程序。第二個參數確定了在那個資料庫連接上執行。
第三步、執行資料庫命令擷取返回結果集,並且對結果機進行處理。
OdbcCommand執行個體提供三個基本的資料庫操作方法。
ExecuteReader():執行對查詢返回的結果集。
ExecuteNonQuery():執行資料 更新語句。(Insert,Delete,Update,Set)
ExecuteScalar():從資料庫中返回查詢結果集的第一行的第一列。
使用OdbcDataAdapter 類搭配OdbcCommandBuilder可以用來填充 DataSet。
代碼執行個體:
1: private bool Connection2DB2WithODBC()
2: {
3: try
4: {
5: OdbcConnection odbcConnection = new OdbcConnection("DSN=localdbInst"); //建立串連
6: string commandText = "INSERT INTO DB2INST1.TEST (ID, NAME, AGE) VALUES (3, ‘candy‘, 30)";
7: string commandText2 = " Select count(*) from test";
8: string commandText3 = "Select * from test";
9: OdbcCommand command = new OdbcCommand(commandText3); //建立命令
10: command.Connection = odbcConnection;
11:
12: odbcConnection.Open(); //開啟資料庫連接
13:
14: // command.ExecuteNonQuery();
15: // int count = (int)command.ExecuteScalar();
16: // MessageBox.Show("The Count of table is:" + count);
17: OdbcDataReader reader = command.ExecuteReader(); //執行資料庫命令
18: string content = "";
19: while (reader.Read())
20: {
21: string id = (string)reader[0];
22: string name = (string)reader[1];
23: int age = (int)reader[2];
24: content += "Id:" + id + " name:" + name + " age:" + age + Environment.NewLine;
25: }
26: MessageBox.Show(content);
27: odbcConnection.Close();
28: }
29: catch (OdbcException exception)
30: {
31: MessageBox.Show(exception.Message + exception.ErrorCode + exception.Data);
32: return false;
33: }
34: return true;
35: }
4、通過OleDB的串連方式進行資料庫操作。
百度百科定義OleDB:OLE DB(OLEDB)是微軟的戰略性的通向不同的資料來源的低級應用程式介面。OLE DB不僅包括微軟資助的標準資料介面開放資料庫連通性(ODBC)的結構化問題語言(SQL)能力,還具有面向其他非SQL資料類型的通路。
說明Ole DB相對於ODBC來說支援的範圍更加廣泛一點。
建立串連的方式 MSDN 上有具體的規範。
"Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=Yes"
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\bin\LocalAccess40.mdb"
"Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI"
"Provider=IBMDADB2;" + "Data Source=databaseName;UID=username;PWD=password;"
其餘的步驟和ODBC是一樣的只不過執行個體化的類不同了而已。
串連代碼執行個體。
1: private bool Connection2DB2WithOleDb()
2: {
3: try
4: {
5: OleDbConnection con = new OleDbConnection("Provider=IBMDADB2;" + "Data Source=sample;UID=db2inst1;[email protected];");
6: con.Open();
7: }
8: catch (Exception)
9: {
10: return false;
11: }
12: return true;
13: }
5、使用IBM 提供的程式集。安裝完用戶端之後在安裝的目錄下的BIN目錄下有個netf11的目錄,這個目錄中提供的程式集,可以很方便的操作DB2資料庫。功能也相對較齊全點。針對性也比較強。
使用IBM提供的這個程式集,不僅有通過使用ODBC具有的方法之外,還可以返回為XmlReader形式的結果集。資料的通用性也大大的提升了。同樣為DB2編程中經常使用的參數賦值提供了很多方便的方法。
串連代碼執行個體:
1: private bool Connection2DB2()
2: {
3: DB2Connection cn = new DB2Connection("Database=SAMPLE;UserID=db2inst1;[email protected];Server=192.168.1.102");
4: DB2Command myCommand = new DB2Command("INSERT INTO DB2INST1.TEST (ID, NAME, AGE) VALUES (2, ‘kasson‘, 25)");
5: myCommand.Connection = cn;
6: try
7: {
8: cn.Open();
9: myCommand.ExecuteNonQuery();
10: cn.Close();
11: }
12: catch (Exception )
13: {
14: return false;
15: }
16: return true;
17: }
三、使用總結。
本篇博文主要介紹了在開發中經常使用的幾種資料庫連接方式,並且在使用過程中,個人感覺ODBC和Ole DB基本上沒有多大的區別,Ole DB相對而言支援的內容更加廣泛一些而已。反過來的意思也就是說,ODBC相比Ole DB更加專業。同理對於廠商提供的程式集來說,也是一樣的。本著不重複造輪子的原則,推薦優先選擇廠商提供的程式集。不過對於一些資料庫如果要使用廠家提供的便利需要安裝一下額外的產品。
如何把資料放到C#的心裡之 DB2執行個體