国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#數據庫編程之連接對象Connection使用詳解

2023-05-11 12:02:24
字體:
來源:轉載
供稿:網友

在C#數據庫編程中,Connection對象用來連接數據源,針對不同的數據庫連接模式,Connection有以下三種形式:

(1)SqlConnection 該對象是專為連接Sql Server數據庫而設計的

(2)OleDbConnection 該對象可以連接任何類型的數據庫

(3)OdbcConnection

在具體學習內容之前,首先看一個例子,通過這個例子首先了解以下C#編寫數據庫應用程序的方法。

本例是從Access數據庫中將學生的信息讀取出來并打印在屏幕中。

程序的源代碼如下:

//首先引入需要的命名空間
using System;
using System.Data;
using System.Data.OleDb; //使用OleDb連接模式
//定義一個類
class Student
{
  static void Main()
  {
    //定義連接字符串,該連接字符串是使用OleDb連接模式連接Access數據庫的方法
    string connString = "provider=Microsoft.Jet.OleDb.4.0;Data Source=E://Lesson//mydb.mdb;";
    //定義連接對象
    OleDbConnection oConn = new OleDbConnection(connString);
    oConn.Open();//打開連接對象
    OleDbCommand oCmd = new OleDbCommand(); //定義命令對象
    oCmd.CommandText = "SELECT * FROM student";//指定命令對象的命令文本
    oCmd.Connection = oConn; //指定命令對象使用的連接
    OleDbDataReader odr; //定義數據讀取器
    odr = oCmd.ExecuteReader(); //執行命令對象,并用odr指向結果集
    if (odr != null) //如果odr不為空
    {
      while (odr.Read()) //調用數據讀取器的Read方法讀取一條數據
      {
        Console.Write("學號:" + odr["sid"].ToString()); //使用odr[string name]方式讀取數據
        Console.WriteLine("/t姓名:" + odr[1].ToString()); //使用odr[int index]方式讀取數據
      }
    }
    odr.Close(); //關閉數據讀取器
    if (oConn.State != ConnectionState.Closed) //如果連接不是關閉狀態則將連接關閉
      oConn.Close();
  }
}

本程序的運行結果圖示如下:

數-據庫操作案例1運行結果

1、Connection對象的使用

對于不同的數據庫連接模式,Connection對象具有不同的類形式:

(1)SqlClient連接模式對應的Connection形式為SqlConnection

(2)OleDb連接模式對應的Connection形式為OleDbConnection

(3)Odbc連接模式對應的Connection形式為OdbcConnection

2、Connection的屬性

Connection的常用屬性有ConnectionString、ConnectionTimeout、DataBase、DataSource和State。

(1)ConnectionString

為連接字符串,用來獲取或設置用于打開數據庫的字符串。

(2)ConnectionTimeout屬性

連接超時時間,用來獲取在嘗試建立連接時終止嘗試,并生成錯誤之前所等待的時間。

(3)DataBase屬性

該屬性用來獲取當前數據庫或鏈接打開后要使用的數據庫名稱。

(4)DataSource屬性

該屬性用來設置要鏈接的數據源實例名稱,如SQL Server的Local服務實例。

(5)State屬性

該屬性是一個枚舉值,用來指示當前數據庫連接所處的狀態。該屬性為只讀值。其取值有以下幾種:

 

屬性值 具體含義
Broken 表示該連接與數據源已中斷。只有當連接打開后再與數據庫失去連接才會導致這種情況。可以關閉處于這種狀態的連接,然后重新打開。
Closed 該鏈接是否處于關閉狀態,如處于關閉狀態,則其值為true
Connecting 指示該連接是否正與數據源連接,如果是則其值為true
Executing 該連接對象正在執行數據庫的操作命令
Fetching 該連接對象正在檢索數據
Open 該連接處于打開狀態

3、Connection對象的方法

不管是SqlConnection、OleDbConnection,還是OdbcConnection都提供了下面兩類方法:

(1)構造方法

Connection對象的構造方法有兩種,一種是不帶參數的構造方法,一種是帶一個字符串類型參數的構造方法。

假設使用OleDb連接模式,則創建Connection的方法為:

OleDbConnection oConn = new OleDbConnection( );
oConn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=E://Lesson//mydb.mdb;";

上面使用的沒帶參數的構造方法創建了一個OleDbConnection的一個實例oConn,并通過oConn的ConnectionString屬性給出連接字符串。或者使用下面的方法:

string connString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=E://Lesson//mydb.mdb;";
OleDbConnection oConn = new OleDbConnection(connString);

上面的例子中首先定義了一個連接字符串connString,在創建OleDbConnection實例oConn時直接將connString作為OleDbConnection構造方法的參數。或者也可以使用下面的方法:

OleDbConnection oConn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=E://Lesson//mydb.mdb;");

即在創建連接實例的同時在構造方法中直接使用連接字符串給出參數的值。

(2)Open方法

Open方法用于打開連接對象,其使用形式如下:

oConn.Open( );

上面的例子中,oConn為創建的連接實例。

(3)Close方法

Close方法用于關閉連接對象,其使用形式如下:

oConn.Close( );

上面的例子中oConn為創建的連接實例。

4、Connection對象的事件

.NET Framework數據提供程序中的Connection對象有兩個事件:InfoMessage和StateChange。

(1)InfoMessage事件

當數據源中有警告或返回信息性消息時,將觸發本事件,即數據源中存在不會引發異常的消息。InfoMessage事件接收InfoMessageEventArgs對象,該對象主要有Source屬性(發送消息的數據提供程序)、Message屬性(消息的描述)、ErrorCode(消息編碼)、Errors對象(包含Count錯誤數量屬性)。

(2)StateChange事件

StateChange事件在Connection對象的狀態發生改變時觸發。可以使用事件的StateChangeEventArgs參數中的OriginalState和CurrentState屬性獲取原狀態信息和當前狀態信息。

下面使用一個例子來說明上面的知識點:

using System;
using System.Data;
using System.Data.OleDb;

class TestConnection
{
  static void Main()
  {
    string connString = "provider=Microsoft.Jet.OleDb.4.0;Data Source=E://Lesson//mydb.mdb;";
    OleDbConnection oConn = new OleDbConnection(connString);
    //預定連接對象狀態發生改變時的處理程序
    oConn.StateChange += new StateChangeEventHandler(oConn_StateChange);
    //預定InfoMessage事件處理程序
    oConn.InfoMessage += new OleDbInfoMessageEventHandler(oConn_InfoMessage);
    oConn.Open();//打開連接
    Console.WriteLine("---------打開連接后連接對象的信息----------");
    Console.WriteLine("連接對象的當前狀態為:" + oConn.State);
    Console.WriteLine("連接字符串為:" + oConn.ConnectionString);
    Console.WriteLine("連接對象的數據源為:" + oConn.DataSource);
    Console.WriteLine("連接對象的數據庫為:" + oConn.Database.ToString());
    Console.WriteLine("連接對象的超時時間為:" + oConn.ConnectionTimeout + "秒");
    Console.WriteLine("連接對象的數據提供者為:" + oConn.Provider);
    Console.WriteLine("連接對象的為數據提供者版本為:" + oConn.ServerVersion);
    if (oConn.State != ConnectionState.Closed) //關閉連接
      oConn.Close();
    Console.WriteLine("----------關閉連接后連接對象的狀態----------");
    Console.WriteLine("/n連接對象的當前狀態為:" + oConn.State);
  }

  //StateChange事件處理程序
  static void oConn_StateChange(object sender, StateChangeEventArgs e)
  {
    Console.WriteLine("----------StateChange----------");
    Console.WriteLine("提示:連接對象狀態發生改變由{0}變為{1}。", e.OriginalState, e.CurrentState);
  }

  //InfoMessage事件處理程序
  static void oConn_InfoMessage(object sender, OleDbInfoMessageEventArgs e)
  {
    Console.WriteLine("----------InfoMessage----------");
    Console.WriteLine("數據源返回的信息:" + e.Message);
    Console.WriteLine("返回信息的對象名稱:" + e.Source);
  }
}

運行結果如下:

數據連接對象運行結果

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涞源县| 安仁县| 应城市| 桐梓县| 崇信县| 湖州市| 涿鹿县| 商城县| 尼勒克县| 清涧县| 赣州市| 荔浦县| 仁寿县| 峨眉山市| 军事| 田东县| 深州市| 莱州市| 仪征市| 长子县| 南安市| 密山市| 酒泉市| 泰宁县| 蒲江县| 嘉义市| 红桥区| 天台县| 渭南市| 汉阴县| 绥中县| 商丘市| 乌兰浩特市| 浏阳市| 云安县| 集安市| 内乡县| 河源市| 哈巴河县| 长子县| 汉中市|