亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ADO.net數(shù)據(jù)訪問技術(shù)在IPTV系統(tǒng)中的應(yīng)用

        2008-12-31 00:00:00王加陽
        電腦知識與技術(shù) 2008年19期

        摘要:本文介紹了ADO.net技術(shù)的工作原理及其對象模型,并以IPTV系統(tǒng)為實(shí)例闡述了ADO.net技術(shù)在系統(tǒng)開發(fā)中的應(yīng)用。該系統(tǒng)在數(shù)據(jù)的訪問速度、數(shù)據(jù)交換、開放性能及網(wǎng)絡(luò)支持等方面有明顯的優(yōu)勢,性能得到了很大的提高。

        關(guān)鍵詞:ADO.net數(shù)據(jù)訪問技術(shù);SQL Server2000;IPTV點(diǎn)播系統(tǒng)

        中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)19-30143-03

        ADO.net Data Access Technology in the System of IPTV

        DENG Ting1,2, WANG Jia-yang1

        (1.School of Information Science and Engineering, Central Sourth University, Changsha 410083, China; 2.Hunan Vocational College of Science and Technology, Changsha 410118, China)

        Abstract: This paper introduces the principle of ADO.net technology and object model, and IPTV system as an example to the ADO.net described in the Application Development System. The system speed data access, data exchange, open network performance and support, has obvious advantages, performance was much improved.

        Key words: ADO.net data access technology; SQL Server2000; IPTV-on-Demand System

        1 引言

        IPTV全稱是Internet Protocol Television,中文名稱是因特網(wǎng)協(xié)議電視,或者是交互式網(wǎng)絡(luò)電視。它主要是以機(jī)頂盒(STB Set-Top-Box)+電視機(jī)、電腦、手機(jī)、PDA等具有連接Intenret功能的設(shè)備作為用戶終端,通過IP網(wǎng)為用戶提供多媒體交互信息的通信系統(tǒng)。IPTV可提供多種多媒體服務(wù)功能,包括數(shù)字電視節(jié)目、可視IP電話、DVDNCD播放、互聯(lián)網(wǎng)瀏覽、電子郵件以及多種在線信息咨詢、娛樂、教育及商務(wù)功能。我們采用Visual C++6.0為開發(fā)平臺,采用ADO技術(shù)開發(fā)了這套系統(tǒng)。Visual C++提供了簡單、靈活、訪問速度快、可擴(kuò)展性強(qiáng)的開發(fā)技術(shù), 而這也是Visual C++的優(yōu)勢所在。在Visual C++提供的幾種主要、易用的方法當(dāng)中。以ActiveX技術(shù)為基礎(chǔ)的ADO.net是為Microsoft最新和最強(qiáng)大的數(shù)據(jù)訪問接口OLE DB而設(shè)計(jì)的,它為OLE DB提供了簡單一致的高層編程接口,在系統(tǒng)數(shù)據(jù)訪問方面具有極大的靈活性,并且易于學(xué)習(xí)和運(yùn)用。下面以IPTV點(diǎn)播系統(tǒng)為實(shí)例,闡述ADO.net技術(shù)在系統(tǒng)開發(fā)當(dāng)中的應(yīng)用。

        2 IPTV點(diǎn)播系統(tǒng)

        IPTV點(diǎn)播系統(tǒng)是充分利用B/S體系結(jié)構(gòu),建立一個(gè)實(shí)用、快速、實(shí)用方便的管理信息系統(tǒng),把對各級服務(wù)器的操作和管理過渡到一個(gè)真正開放的、與平臺無關(guān)的環(huán)境中。

        2.1 系統(tǒng)結(jié)構(gòu)介紹

        IPTV點(diǎn)播系統(tǒng)中的內(nèi)容管理系統(tǒng)實(shí)現(xiàn)對系統(tǒng)中媒體內(nèi)容的集中管理,包括內(nèi)容信息和內(nèi)容分布狀態(tài)的管理和維護(hù)功能。此系統(tǒng)采用B/S模式,服務(wù)器采用操作系統(tǒng)為Windows NT,客戶機(jī)平臺可以是Windows 9x,Windows NT等,數(shù)據(jù)庫采用SQL Server 2000。系統(tǒng)的開發(fā)平臺是Visual C++(VC)6.0,利用它可以方便地開發(fā)C/S或者B/S模式的應(yīng)用程序。VC 6.0具有多種數(shù)據(jù)庫服務(wù)接口,但最具有競爭力的是ADO.net,本系統(tǒng)即采用ADO.net技術(shù)。

        2.2 系統(tǒng)功能設(shè)計(jì)

        本論文討論IPTV點(diǎn)播系統(tǒng)中的內(nèi)容管理模塊的設(shè)計(jì)。包括如下:

        (1)發(fā)布點(diǎn)類型管理;

        (2)文件分發(fā)管理;

        (3)發(fā)布點(diǎn)內(nèi)容管理:

        ①發(fā)布點(diǎn)管理(啟動(dòng)禁用發(fā)布點(diǎn)、查看修改發(fā)布點(diǎn)、添加刪除發(fā)布點(diǎn));

        ②文件管理。

        3 ADO.net技術(shù)及其應(yīng)用

        ADO.NET是基于.NET框架、面向分布式和以XML數(shù)據(jù)格式為核心的數(shù)據(jù)訪問技術(shù),它提供了一組數(shù)據(jù)訪問服務(wù)的類,ADO.NET統(tǒng)一了數(shù)據(jù)容器類編程接口,無論編寫何種應(yīng)用程序都可以通過同一組類來處理數(shù)據(jù)。無論后端數(shù)據(jù)源是SQL Server數(shù)據(jù)庫、Oracle數(shù)據(jù)庫、其他數(shù)據(jù)庫、XML文件,還是一個(gè)文本文件,都使用一樣的方式來處理它們。同時(shí),為了方便程序員使用ADO.NET,它還提供了一組豐富的控件,利用可視化方式開發(fā)數(shù)據(jù)庫應(yīng)用。

        ADO. NET支持多種開發(fā)需求,包括創(chuàng)建由應(yīng)用程序、工具、語言或Internet瀏覽器使用的前端數(shù)據(jù)庫客戶端和中間層業(yè)務(wù)對象。設(shè)計(jì)ADO.NET的目的是為了滿足這一新編程模型的以下要求:具有斷開式數(shù)據(jù)結(jié)構(gòu);能夠與XML緊密集成;具有能夠組合來自多個(gè)、不同數(shù)據(jù)源的數(shù)據(jù)的通用數(shù)據(jù)表示形式以及具有為與數(shù)據(jù)庫交互而優(yōu)化的功能,這些要求都是.NET Framework固有的內(nèi)容。

        ADO.NET包含兩大核心控件,分別是.NET Framework數(shù)據(jù)提供程序和DataSet.NET Framework數(shù)據(jù)提供程序用于連接到數(shù)據(jù)庫、執(zhí)行命令和檢索結(jié)果,它包括四個(gè)核心對象。Connection對象用于與特定的數(shù)據(jù)源建立連接。Command對象用于對數(shù)據(jù)源執(zhí)行命令。DataReader對象用于從數(shù)據(jù)源中讀取只向前的只讀數(shù)據(jù)流,它是一個(gè)簡易的數(shù)據(jù)集,另外一個(gè)數(shù)據(jù)集是DataSet。DataAdapter對象用于用數(shù)據(jù)源的數(shù)據(jù)填充DataSet數(shù)據(jù)集并解析更新數(shù)據(jù)集。DataSet是一個(gè)功能豐富、較復(fù)雜的數(shù)據(jù)集,它是支持ADO.NET的斷開式、分布式數(shù)據(jù)方案的核心對象。DataSet表示包括相關(guān)表、主外鍵約束和表間關(guān)系在內(nèi)的整個(gè)數(shù)據(jù)集。DataSet專門用來處理從數(shù)據(jù)源獲得的數(shù)據(jù),無論數(shù)據(jù)來自什么數(shù)據(jù)源,它都使用相同的方式操作數(shù)據(jù)。

        通常,使用ADO.NET開發(fā)數(shù)據(jù)庫應(yīng)用程序應(yīng)遵循以下幾個(gè)步驟:

        (1)選擇所使用的數(shù)據(jù)源,即選擇使用哪個(gè).NET Framework數(shù)據(jù)提供程序;

        (2)使用Connection對象建立與數(shù)據(jù)源的連接;

        (3)使用Command對象完成對數(shù)據(jù)源的連接;

        (4)使用數(shù)據(jù)集對獲得的數(shù)據(jù)進(jìn)行各種操作,即利用DataReader對象或DataSet對象;

        (5)緩存數(shù)據(jù);

        (6)使用各種數(shù)據(jù)控件,如DataGrid控件顯示數(shù)據(jù)。

        4 ADO.net技術(shù)在IPTV點(diǎn)播系統(tǒng)中的應(yīng)用

        4.1 引入ADO庫文件

        使用ADO前必須在工程的stdafx.h文件里用直接引入符號#import引入ADO庫文件,代碼如下所示:

        #import \"c:\\program files\\common files\\system\\ado\\msado15.dll\"

        no namespaces rename(\"EOF\" adoEOF\")

        4.2 初始化OLE/COM庫環(huán)境

        因?yàn)锳DO庫是一組COM動(dòng)態(tài)庫,所以應(yīng)用程序在調(diào)用ADO前,必須初始化OLE/COM庫環(huán)境。在MFC應(yīng)用程序里,一般是在應(yīng)用程序主類的InitInstance成員函數(shù)里用AfxOleInit()初始化OLE/COM庫環(huán)境。

        4.3 使用ADO基本接口

        ADO庫包含三個(gè)基本接口:ConnectionPtr、CommandPtr和RecordsetPtr,為了便于使用分別定義指Connection對象、Command對象和Recordset對象的指針,它們分別為m_pConnection、m_pCommand和m_pRecordset。下面介紹指針的定義和在VC++中的使用。

        (1)創(chuàng)建Connection對象并連接數(shù)據(jù)庫

        ①定義一個(gè)指向Connection對象的指針:ConnectionPtr m_pConnection;

        ②創(chuàng)建Connection對象實(shí)例:m_pConnection.CreateInstance(\"ADODB.Connection\");

        ③連接并打開數(shù)據(jù)庫。以下列舉一些常用的連接方式:

        為了統(tǒng)一編程和方便修改,我們創(chuàng)建通用數(shù)據(jù)連接文件(*.UDL),這樣當(dāng)數(shù)據(jù)源改變時(shí),只需修改對應(yīng)udl文件設(shè)置數(shù)據(jù)源,無需更改軟件程序。下面是訪問不同類型數(shù)據(jù)源設(shè)置ConnectionString的標(biāo)準(zhǔn):

        訪問ODBC數(shù)據(jù)

        \"Provide=MSDASQL;DSN=dsnName;UID=username;PWD=userPassword;\"

        訪問MS SQL數(shù)據(jù)庫

        \"Provide=SOLOLEDB;Data Source=serverName;Initial Catalog=databaseName;

        User ID=username;Password=userPassword\"

        下面代碼示例就是使用mydata.udl(假設(shè)創(chuàng)建了該UDL文件)連接并打開數(shù)據(jù)庫:

        m_PConnection->ConnectionString=\"File Name=C:\\mydir\\mydata.udl\"

        m_PConnection->Open(\"\",\"\",\"\",NULL);

        Connection對象除Open方法外還有許多方法,我們先介紹Connection對象中兩個(gè)有用的屬性ConnectionTimeOut與State。

        ConnectionTimeOut用來設(shè)置連接的超時(shí)時(shí)間,需要在Open之前調(diào)用。例如,設(shè)置超時(shí)時(shí)間為5秒:

        m_pConnection->ConnectionTimeout=5;//設(shè)置超時(shí)時(shí)間為5秒

        m_pConnection->ConnectionStrin2=\"File Name=C:\\mydir\\mydata.udl\"

        m_PConnection->Open(\",\"\",\"\",NULL);

        State屬性指明當(dāng)前Connection對象的狀態(tài),O表示關(guān)閉,1表示已經(jīng)打開,我們可以通過讀取這個(gè)屬性來作相應(yīng)的處理,例如:如果已經(jīng)打開了連接則關(guān)閉它。

        if(m_PConnection->State)

        m_pConnection->Close();

        利用Execute方法執(zhí)行SQL命令:

        Execute執(zhí)行完后返回一個(gè)指向記錄集的指針,下面我們給出具體代碼并作說明。

        variant t RecordsAffected;

        ///執(zhí)行SQL命令:CREATE TABLE創(chuàng)建表格users,users包含四個(gè)字段:整型ID,字符串username,整型old,日期型birthday

        m_pConnection->Execute(\"CREATE TABLE users(1D INTEGER. username

        TEXT,old INTEGER,birthday DATETIME)\",RecordsAffected,adCmdText):

        ///往表格里面添加記錄

        m_pConnection->Execute(\"INSERT INTO users(ID,username,old,birthday)

        VALUES(1001,'長江七號',90,'2007/12/25')\",RecordsAffected,adCmdText);

        ///將所有記錄old字段的值加1

        m _pConnection->Execute(\"UPDATE Users SET old=old+1\",RecordsAffected,adCmdText);

        ///執(zhí)行SQL統(tǒng)計(jì)命令得到包含記錄條數(shù)的記錄集

        m_pRecordset=m_pConnection->Execute(\"SELECT COUNT(*) FROM users\",

        RecordsAffected,adCmdText);

        variant t vlndex=(1ong)0;

        variant t vCount=m_pRecordset->GetCollect(vIndex);///取得第一個(gè)字段的值放入vCount變量

        m_pRecordset->Close();///關(guān)閉記錄集

        CString message;

        message.Format(\"共有%d條記錄\",vCount.IVa1);

        AfxMessageBox(messaRe);///顯示當(dāng)前記錄條數(shù)

        (2)創(chuàng)建Command對象并執(zhí)行SQL命令

        定義一個(gè)指向Command對象的指針:CommandPtr m_pCommand;

        創(chuàng)建Command對象實(shí)例:m_pCommand.Creatlnstance(\"ADODB.Command\");

        執(zhí)行SQL命令:

        variant t vNULL;vNULL.vt=VT ERROR:

        VNULL.scode=DISP E PARAMNOTFOUND;///定義為無參數(shù)

        m_pCommand->ActiveConnection=m_pConnection;///將建立的連接賦值給它

        m_pCommand->CommandText=\"SELECT*FROM users\";///命令字串

        m_pRecordset=m_pCommand->Exccute(vNULL,vNULL,adCmdText);///執(zhí)行命令,取得記錄集

        (3)創(chuàng)建Recordset對象并操作記錄集

        定義一個(gè)指向Recordset對象的指針:RecordsetPtr m_pRecordset;

        創(chuàng)建Recordset對象實(shí)例:m_pRecordset.CreateInstance(\"ADODB.Recordset\");

        查詢?nèi)〉糜涗浖簃_pRecordset->Open(\"SELECT *FROM users\",variant t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

        遍歷更新記錄集:

        variant t vUsername,vBirthday,vID,vOld;

        關(guān)閉記錄集:m_pRecordset.Close();

        參考文獻(xiàn):

        [1] David Sceppa.Microsoft(r)ADO.NET(Core Reference)[M].Microsoft Press,2002.

        [2] senjeev Rohilla,Senthil Nathan,Surbhi Malhotra. 陳君,王寶良,譯. ADO.NET專業(yè)項(xiàng)目實(shí)例開發(fā)[M].北京:中國水利水電出版社,2003.

        [3] 周緒,管麗娜,白海波.SQL Server2000中文版入門與提高[M].北京:清華大學(xué)出版社,2002.

        [4] 陸冬云,溫浩,許志宏.以客戶為中心的瀏覽器服務(wù)器(B/S)網(wǎng)絡(luò)計(jì)算模型明[J].計(jì)算機(jī)與應(yīng)用,2001(7):335-342.

        品色堂永远的免费论坛| 亚洲一区毛片在线观看| 日韩精品免费一区二区中文字幕| 亚洲黄色精品在线播放| 亚洲国产精品久久艾草| 欧妇女乱妇女乱视频| 人妻精品丝袜一区二区无码AV | 国产成人精品电影在线观看| 久久精品亚洲牛牛影视| 国产欧美日韩不卡一区二区三区| 日日噜噜夜夜久久密挑| 一区视频免费观看播放| 浪货趴办公桌~h揉秘书电影| 精品无码中文视频在线观看| 在线观看国产三级av| 日韩精品人妻一区二区三区蜜桃臀 | 久久久久久AV无码成人| 日本人妖一区二区三区| 人妖av手机在线观看| 伊人久久精品久久亚洲一区| 国产精品自产拍在线观看免费 | 亚洲一区第二区三区四区| 日韩经典午夜福利发布| 一本一道久久综合狠狠老| 在线观看国产三级av| 侵犯了美丽丰满人妻中文字幕| 亚洲人成电影网站色| 国产精品亚洲综合一区在线观看| 国产香蕉尹人综合在线观| 成年人视频在线播放麻豆| 激情人妻另类人妻伦| 色综合久久88色综合天天| 国产午夜精品久久久久免费视| 99re6久精品国产首页| 蕾丝女同一区二区三区 | 大陆极品少妇内射aaaaa| 色综合久久久久久久久五月| 久久久久久99精品| 亚洲综合久久中文字幕专区一区 | 女女同女同一区二区三区| 国产乱人激情h在线观看|