• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發ASP.NET → ADO.NET中的Connection對象詳解

    ADO.NET中的Connection對象詳解

    相關軟件相關文章發表評論 來源:西西整理時間:2015/1/12 9:31:26字體大?。?em class="fontsize">A-A+

    作者:西西點擊:125次評論:0次標簽: Connection

    • 類型:站長工具大?。?i>8.7M語言:中文 評分:3.3
    • 標簽:
    立即下載

    ADO.NET Connection對象代表與數據源的連接。在訪問數據庫時,首先創建一個ADO.NET Connection對象,通過它建立到數據庫的連接。通常需要在頭文件中定義一個VConnection對象。

    連接字符串

    連接字符串的幾個常用參數:

    Provider:這個屬性用于設置或返回連接提供程序的名稱,僅用于OleDbConnection對象。

    Connection Timeout或Connect Timeout:在中止嘗試并產生異常前,等待連接到服務器的連接時間長度(以秒為單位)。默認是15秒。

    Initail Catalog:數據庫的名稱。

    Data Source:連接打開時使用的SQL Server名稱,或者是Microsoft Access數據庫的文件名。

    Password:SQL Server帳戶的登錄密碼。

    User ID:SQL Server登錄帳戶。

    Integrated Security或Trusted Connection:此參數決定是否是安全連接??赡艿闹涤蠺rue、False和SSPI(SSPI是True的同義詞)。

    Persist Security Info:當設置為False時,如果連接是打開的或曾經處于打開狀態,那么安全敏感信息(如密碼)不會作為連接的一部分返回。設置屬性值為True可能有安全風險。False是默認值。

    1.寫法一

    “Data Source=服務器名; Initial Catalog=數據庫; User ID =用戶名; Password=密碼; Charset=UTF8; “

    2.寫法二

    “Server=服務器名; Database=數據庫; uid=用戶名; Password=密碼;Charser=UTF8″

    PS:   Integrated Security = True;

    如果忘了連接字符串怎么寫怎么辦?(雖然挺丟人的)

    可以使用SqlConnectionStringBuilder生成字符串,如果忘了怎么寫。

    MySqlConnectionStringBuilder可以用點出來你想要的屬性。

    Connection需要釋放

    Connection是實現了IDisposable接口的對象。使用Connection需要釋放資源。

    建議用 using(Connection對象)

                {

                     //自動Close(); 自動Dispose();

                }

    StateChange事件

    這個事件會監聽數據庫連接狀態。當數據庫連接狀態改變時,就會觸發這個操作。

    我們就可以進行一些操作。

    數據庫連接狀態是一個枚舉,ConnectionState。

    目前為止ConnectionState一共有三個用的上值分別是

    Closed           連接處于關閉狀態。

     Connecting    連接對象正在與數據源連接。

     Open             連接處于打開狀態。

    連接池

    1.實驗

    首先,在連接字符串中設置 pooling = false;

    然后通過 

            StopWatch watch =new StopWatch( );

            watch.Start();

            //進行數據庫操作。

            watch.Stop();

            輸出watch.Elapsed;

    我們驚喜的返現,在連接字符串中設置了pooling = false以后,照原有性能下降了20~30倍。

    Connection對象提供了4種連接方式

    1、OLEDB :System.Data.Oledb.OledbConnection   對于非SQL Server和非Oracle數據庫使用

    2、SQL:System.Data.SqlCilent.SqlConnection    用于連接SQL Server數據庫

    3、ODBC:System.Data.Odbc.OdbcConnection       如果數據庫沒有內置的OLEDB,則可以使ODBC.NET數據提供者對象。

    4、Oracle:System.Data.OracleClient.OracleConnection   用于連接Oracle數據庫

    為什么呢?

    我繼續看,下一個實驗。先把pooling = false刪掉。

    用循環控制 Connection對象的關閉與打開。進行2000次吧。

    然后我們使用SqlServer【工具】→【SQL Server Profiler】。使用這個工具可以觀察數據庫事務、連接記錄。

    我們發現2000次的 Open()/Close(),在SQL Server Profiler只查看到了一次數據庫連接。

    而Pooling=false以后是實實在在的連接了2000次。

    做這兩個實驗的目的是為了引出一個知識點,即連接池。

    那么,現象有了,我們結下來看看原理。

    2.原理

    原理圖

    Connection對象,第一次連接建立以后,Close時,并不是直接關閉,而是保存在連接池中。

    下次連接時,如果連接字符串相同,就調用連接池中的連接。而不是重新建立。

    這樣會提高一定的效率。這一點在在實驗一中驗證過了。

    //1.銷毀的是Conn對象,而連接池中的連接并沒有銷毀。

    //2.連接池是ADO.NET提供的,不是數據庫的。在本地緩存中。

    3.第一次運行慢?

    .NET的程序為什么大多數第一次運行比較慢呢?

    即時編譯固然是很重要一個原因。

    進行數據庫操作時,ADO連接池是空的,也是一個原因!

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>