<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kapok

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

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      455 隨筆 :: 0 文章 :: 76 評(píng)論 :: 0 Trackbacks
    http://blog.csdn.net/jabby12/archive/2004/08/03/59602.aspx
      在ADO.NET對(duì)象模型中,Connection對(duì)象代表了與數(shù)據(jù)源之間的連接。.NET框架中有兩個(gè)Connection對(duì)象:一個(gè)是OleDbConnection,用于大多數(shù)的數(shù)據(jù)庫(kù)連接,一個(gè)是SqlConnection,是MS開(kāi)發(fā)的專(zhuān)門(mén)用于針對(duì)SQL Server的連接。在創(chuàng)建Connection對(duì)象之前,你必須先引用System.Data.OleDb或者System.Data.SqlClient和System.Data三個(gè)名空間。

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

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

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

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

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

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

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

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

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

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

    連接池:

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

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

          如何打開(kāi)連接池?默認(rèn)情況下是打開(kāi)的.

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

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

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

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

    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 的好處是在進(jìn)行此次操作后便可釋放資源。)

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

    例:

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

    con.Open();

    OleDbTransaction tran=con.BeginTransaction(); (注:調(diào)用此方法會(huì)在連接時(shí)返回一個(gè)新的打開(kāi)的Transaction對(duì)象來(lái)進(jìn)行事務(wù)管理)

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

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

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

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

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

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

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

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

      有時(shí)你會(huì)發(fā)覺(jué)有需要獲取數(shù)據(jù)庫(kù)的架構(gòu)信息來(lái)方便程序的運(yùn)行??墒褂肙leDbConnection對(duì)象的GetOleDbSchemaTable()方法來(lái)獲取,它需要一個(gè)參數(shù)用來(lái)作返回的架構(gòu)信息的過(guò)濾器,即只獲取表中的列或行信息,不寫(xiě)此參數(shù)則獲取整個(gè)表所有列的信息。

    例:

    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的連接對(duì)象還有很多有用的方法,具體查MSDN。


    posted on 2005-04-12 14:59 笨笨 閱讀(694) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): ALL 、.NET
    主站蜘蛛池模板: 日韩免费无砖专区2020狼| 色噜噜亚洲男人的天堂| 国产大片91精品免费看3| 久爱免费观看在线网站| 免费阿v网站在线观看g| 黄色网址免费在线观看| 亚洲AV无码一区二区三区性色| 亚洲AV色香蕉一区二区| 亚洲综合区小说区激情区| 日韩免费无砖专区2020狼| 99在线精品视频观看免费| 一级毛片在线免费看| 国产无遮挡又黄又爽免费网站| 在线观看亚洲精品专区| 亚洲区小说区图片区QVOD| 99视频有精品视频免费观看| 免费夜色污私人影院网站| 亚洲av片在线观看| 亚洲欧美日韩国产精品一区| 亚洲中文久久精品无码1| 精品亚洲aⅴ在线观看| 日本免费观看网站| 最近的中文字幕大全免费版| 国产成人无码免费网站| 一边摸一边桶一边脱免费视频 | 亚洲欧洲国产成人综合在线观看| 岛国大片免费在线观看| 成人奭片免费观看| 毛片a级毛片免费播放下载| 亚洲高清中文字幕免费| 999久久久免费精品国产| 成年人网站免费视频| 99久久久精品免费观看国产| 国产h视频在线观看网站免费| 午夜性色一区二区三区免费不卡视频| 三年片在线观看免费大全电影 | 青娱乐免费在线视频| 噼里啪啦免费观看高清动漫4| 曰曰鲁夜夜免费播放视频 | 亚洲AV日韩精品久久久久久| 久久精品国产精品亚洲艾|