說明:前面(一)(二)總結了數據庫連接的概念以及連接數據庫的字符串中的各個參數的含義。這篇隨筆介紹connection對象的常用方法。
Connection對象的常用方法
Connection類型的對象用來連接數據源。在不同的數據提供者的內部,Connection對象的名稱是不同的,在SQL Server Data Provider裏叫SqlConnection,而在OLE DB Data Provider裏叫OleDbConnection。
下面將詳細介紹Connection類型對象的常用方法。
1.構造函數
構造函數用來構造Connection類型的對象。對於SqlConnection類,其構造函數說明如下表所示。
函數定義 |
參數說明 |
函數說明 |
SqlConnection() |
不帶參數 |
創建SqlConnection對象 |
SqlConnection(string connectionstring) |
連接字符串 |
根據連接字符串,創建SqlConnection對象 |
1 第1種: 2 3 String ConnectionString =”server=(local); Initial Catalog =stu; ”; 4 5 SqlConnection conn=new SqlConnection(); 6 7 conn.ConnectionString=ConnectionString; 8 9 conn.Open(); 10 11 第2種 12 13 String cnn=”server=(local); Initial Catalog =stu; ”; 14 15 SqlConnection conn=new SqlConnection(cnn); 16 17 conn.Open();
顯然使用第2種方法輸入的代碼要少一點,但是兩種方法執行的效率並沒有什麼不同,另外,
如果需要重用Connection對象去使用不同的身份連接不同的數據庫時,使用第一種方法則非常有效。
例如:
1 SqlConnection conn=new SqlConnection(); 2 3 conn.ConnectionString=connectionString1; 4 5 conn.Open(); 6 7 //訪問數據庫,做一些事情 8 9 conn.Close(); 10 11 conn.ConnectionString=connectionString2; 12 13 conn.Open(); 14 15 //訪問數據庫,做另外一些事情 16 17 conn.Close();
注意:只有當一個連接關閉以後才能把另一個不同的連接字符串賦值給Connection 對象。
如果不知道Connection對象在某個時候是打開是關閉時,可以檢查Connection對象的State屬性,它的值可以是Open,也可以是Closed,這樣就可以知道連接是否是打開的。
下表說明了OleDbConnection類的構造函數。可以看出,它們和SqlConnection類的構造函數非常相近。
函數定義 |
參數說明 |
函數說明 |
OleDbConnection() |
不帶參數 |
創建OleDbConnection對象 |
OleDbConnection(string connectionstring) |
連接字符串 |
根據連接字符串,創建OleDbConnection對象 |
2.Open和Close方法
Open和Close方法分別用來打開和關閉數據庫連接,無參無返回值。
Open方法:使用ConnectionString所指定的屬性設置打開數據庫連接
Close方法:關閉與數據庫的連接,這是關閉任何打開連接的首選方法
注意:數據庫連接是很有價值的資源,因爲連接要使用到寶貴的系統資源,如內存和網絡帶寬,因此對數據庫的連接必須小心使用,
要在最晚的時候建立連接(調用Open方法),在最早的時候關閉連接(調用Close方法)。
也就是說在開發應用程序時,不再需要數據連接時應該立刻關閉數據連接。
這點看起來很簡單,要達到這個目標也不難,關鍵是要有這種意識。
3、Connection對象連接數據源代碼示例
以下代碼演示使用連接字符串創建數據庫連接的一般方式。
1 //連接Access數據庫 2 3 string connStr="Provider= Microsoft.Jet.OleDB.4.0;Data Source=D:\login.mdb" 4 5 //根據字符串創建OleDbConnection連接對象 6 7 OleDbConnection objConnection=new OleDbConnection(strConnect); 8 9 //打開數據源連接 10 11 if(objConnection.State==ConnectionState.Closed) 12 13 { 14 15 objConnection.Open(); 16 17 } 18 19 //使用結束後關閉數據源連接 20 21 if(objConnection.State==ConnectionState.Open) 22 23 { 24 25 objConnection.Close(); 26 27 }
在這段代碼裏的業務邏輯是:
(1)創建連接字符串,從中可以看出Connection對象是使用OleDB類型的Data Provider,連接到D盤下login.mdb的Access數據庫中。
(2)根據連接字符串,創建Connection類型的對象,這裏用到了OleDbConnection。
(3)打開數據源的連接。
(4)執行數據庫的訪問操作代碼。
(5)關閉數據源連接。
完整案例
1、利用SQL Server2000建立一個數據庫Student,並建立相應的表studentInfo
2、用Visual C#20XX建立一個基於Window的應用程序,並添加一個按鈕。
3、雙擊按鈕,自動切換到後臺代碼編輯文件Form1.cs中,並自動添加了與此按鈕的Click事件相關的處理程序button1_Click(object sender, EventArgs e)
4、在Form1.cs文件中添加如下命名空間:
using System.Data.SqlClient;
5、在事件處理程序button1_Click中添加代碼:
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.SqlClient; namespace DataBase { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { try { SqlConnection conn = new SqlConnection(); //conn.ConnectionString = "server=(local);user id=sa;Initial Catalog=Student;pwd=;"; conn.ConnectionString = "server=(local);Initial Catalog=Student;Integrated Security=SSPI;"; conn.Open(); if (conn.State == ConnectionState.Open) { MessageBox.Show("連接已經打開"); } conn.Close(); if (conn.State == ConnectionState.Closed) { MessageBox.Show("連接已經關閉"); } } catch (Exception ex) { MessageBox.Show("數據庫連接失敗" + ex.Message); } } } }