kapok

          垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks
          <2005年4月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          常用鏈接

          留言簿(28)

          隨筆分類

          隨筆檔案

          Corba

          EAI

          Online Document

          Open Source

          Portal

          RSS Links

          Weblogic

          不錯的鏈接

          工具集合

          數(shù)據(jù)倉庫相關(guān)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          http://blog.csdn.net/jabby12/archive/2004/08/03/59602.aspx
            在ADO.NET對象模型中,Connection對象代表了與數(shù)據(jù)源之間的連接。.NET框架中有兩個Connection對象:一個是OleDbConnection,用于大多數(shù)的數(shù)據(jù)庫連接,一個是SqlConnection,是MS開發(fā)的專門用于針對SQL Server的連接。在創(chuàng)建Connection對象之前,你必須先引用System.Data.OleDb或者System.Data.SqlClient和System.Data三個名空間。

          1.SQL Server數(shù)據(jù)庫的連接   

             你可以使用Connection對象的屬性來指定數(shù)據(jù)源的位置及其它參數(shù)來連接數(shù)據(jù)庫。如:SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;use id=yourid,password=yourpassword;");

          這是連接到本地數(shù)據(jù)庫,如果你想連到網(wǎng)絡(luò)上的的數(shù)據(jù)庫,就要利用集成安全性,同時忽略用戶名和密碼。如:

          SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

          如果使用的是ODBC連接到SQL Server,可以通過使用Trusted_Connection=y(tǒng)es;來使用網(wǎng)絡(luò)數(shù)據(jù)庫。

          2.Oracle數(shù)據(jù)庫的連接:(前提:必須先安裝Oracle客戶端實用工具的適當版本,并創(chuàng)建數(shù)據(jù)庫別名,接著就可以用以下的連接字符串進行連接)

          SqConnection con=new SqlConnection("Provider=MSDAORA;Data Source=dbAlias;User id=yourid,password=youpwd;);

          3.Access數(shù)據(jù)庫的連接:(你可以使用以下連接字符串來連接)

          SqConnection con=new SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\yourdb.mdb;User id=yourid,password=youpwd;);

          連接到數(shù)據(jù)庫之后即可調(diào)用Connection對象的Open()方法來打開與數(shù)據(jù)庫的連接,同理Close()方法用來關(guān)閉與數(shù)據(jù)庫的連接。

          連接池:

                連接池是什么?在一個三層結(jié)構(gòu)(或N層)中,當一個客戶端與中間層服務(wù)器進行通訊的時候,服務(wù)器會創(chuàng)建一個與數(shù)據(jù)庫連接,并執(zhí)行操作的業(yè)務(wù)對象(也就是與數(shù)據(jù)庫連接的實例),同時會創(chuàng)建一個Connection對象,在放在一個池中(實際上是一個線程)。當釋放這個實例的時候,此實例便關(guān)閉,此時并沒有真正的關(guān)閉數(shù)據(jù)連接,而是將Connection對象標記為關(guān)閉后存儲在池中。如果這時再來啟動一個新的業(yè)務(wù)對象,這時就會檢查現(xiàn)有的連接,如果池中有打開的連接,即使用它,否則再創(chuàng)建一個新連接。

          可能你會覺得很奇怪,如果這樣,那池中不是有很多的對象,豈不是會浪費很多的資源,這個問題的解決方案是你可以設(shè)置與數(shù)據(jù)庫的特定連接時間(默認60秒),如果在這個時間內(nèi)未被使用,.NET提供就會關(guān)閉此連接。

                如何打開連接池?默認情況下是打開的.

                如何關(guān)閉連接池?可以使用OleDbConnection.ReleaseConnectionPool()方法來關(guān)閉連接池,更或者你可以在OLE DB連接字符串中加上OLE DB Services= - 4;在用SqlConnection對象時可在連接符中加上Pooling=False。這時你再調(diào)用Close()時候便會真正地關(guān)閉與數(shù)據(jù)庫的連接。

          (注1:可以使用SQL事件探查器或性能監(jiān)視器來觀察連接到數(shù)據(jù)庫中的連接數(shù)目,以識別連接是否真正關(guān)閉或是只是放入池中。)

          (注2:可以顯式調(diào)用Dispose()方法在垃圾收集器回收之前釋放資源,但如果你只是將Connection對象設(shè)為NULL的話,是不會斷開與數(shù)據(jù)源的連接的)

                利用Connection對象來創(chuàng)建Command對象:(ADO.NET中用Command對象來執(zhí)行數(shù)據(jù)查詢,更新)例 :

          SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

          using (OleDbCommand cmd=con.CreateCommadn())

          {

                cmd.CommandText="select * from table";

                cmd.ExecuteNonQuery();

          }

          (注:此處使用using 的好處是在進行此次操作后便可釋放資源。)

          利用Connection對象來創(chuàng)建Transaction對象:(Transaction對象是ADO.NET中的事務(wù)管理對象)

          例:

          SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

          con.Open();

          OleDbTransaction tran=con.BeginTransaction(); (注:調(diào)用此方法會在連接時返回一個新的打開的Transaction對象來進行事務(wù)管理)

          (注:事務(wù)是指一組單一實體運行的語句,可以確保數(shù)據(jù)的完整性,防止因系統(tǒng)故障或其它原因而引起的數(shù)據(jù)丟失。概念很抽象,呵呵,看下去就明白了)

          事務(wù)有ACID四個屬性(即原子性,一致性,隔離性,持久性):

          原子性指在執(zhí)行事務(wù)過程中,這個過程要么成功執(zhí)行,要么不執(zhí)行。

          一致性指事務(wù)前和事務(wù)后的數(shù)據(jù)的一致性,也就是如果事務(wù)成功執(zhí)行的話,系統(tǒng)就返回成功的狀態(tài),即所有數(shù)據(jù)的改變標記為已完成,如沒完成事務(wù),即回滾,并回到先前的合法狀態(tài)。

          隔離性指一個事務(wù)內(nèi)的任何變化都獨立于其它的事務(wù)(相對于兩個事務(wù)的說法)

          持久性指事務(wù)是持續(xù)的,也就是事務(wù)成功完成后的改變是永久的。

          (注:事務(wù)有手動和自動兩種,本文的主題不在此,事務(wù)的介紹在其它篇章會涉及到)

                取得數(shù)據(jù)庫的架構(gòu)信息:

            有時你會發(fā)覺有需要獲取數(shù)據(jù)庫的架構(gòu)信息來方便程序的運行。可使用OleDbConnection對象的GetOleDbSchemaTable()方法來獲取,它需要一個參數(shù)用來作返回的架構(gòu)信息的過濾器,即只獲取表中的列或行信息,不寫此參數(shù)則獲取整個表所有列的信息。

          例:

          OleDbConnectioncon=new OleDbConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

          con.Open();

          DataTable dt=con.GetOleDbSchemaTable(OleDbSchamaGuid,null);

          foreach(DataRow row in dt.Rows)

          Console.WriteLine(row["column_name"].ToString());

          ---------------------------------------------------------------

          關(guān)于AD.NET的連接對象還有很多有用的方法,具體查MSDN。


          posted on 2005-04-12 14:59 笨笨 閱讀(699) 評論(0)  編輯  收藏 所屬分類: ALL.NET
          主站蜘蛛池模板: 多伦县| 木兰县| 福海县| 登封市| 牡丹江市| 普洱| 成武县| 盈江县| 元朗区| 临城县| 新沂市| 醴陵市| 荥经县| 尼木县| 长沙市| 福州市| 吴江市| 同德县| 措勤县| 栾川县| 克东县| 皋兰县| 昆明市| 富裕县| 福泉市| 嵊泗县| 富平县| 海林市| 蕉岭县| 抚松县| 资中县| 荥经县| 巴东县| 台南县| 海城市| 灌阳县| 福泉市| 镇雄县| 炉霍县| 丰顺县| 仁化县|