999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ADO.net數據訪問技術在IPTV系統中的應用

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

摘要:本文介紹了ADO.net技術的工作原理及其對象模型,并以IPTV系統為實例闡述了ADO.net技術在系統開發中的應用。該系統在數據的訪問速度、數據交換、開放性能及網絡支持等方面有明顯的優勢,性能得到了很大的提高。

關鍵詞:ADO.net數據訪問技術;SQL Server2000;IPTV點播系統

中圖分類號:TP311文獻標識碼: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,中文名稱是因特網協議電視,或者是交互式網絡電視。它主要是以機頂盒(STB Set-Top-Box)+電視機、電腦、手機、PDA等具有連接Intenret功能的設備作為用戶終端,通過IP網為用戶提供多媒體交互信息的通信系統。IPTV可提供多種多媒體服務功能,包括數字電視節目、可視IP電話、DVDNCD播放、互聯網瀏覽、電子郵件以及多種在線信息咨詢、娛樂、教育及商務功能。我們采用Visual C++6.0為開發平臺,采用ADO技術開發了這套系統。Visual C++提供了簡單、靈活、訪問速度快、可擴展性強的開發技術, 而這也是Visual C++的優勢所在。在Visual C++提供的幾種主要、易用的方法當中。以ActiveX技術為基礎的ADO.net是為Microsoft最新和最強大的數據訪問接口OLE DB而設計的,它為OLE DB提供了簡單一致的高層編程接口,在系統數據訪問方面具有極大的靈活性,并且易于學習和運用。下面以IPTV點播系統為實例,闡述ADO.net技術在系統開發當中的應用。

2 IPTV點播系統

IPTV點播系統是充分利用B/S體系結構,建立一個實用、快速、實用方便的管理信息系統,把對各級服務器的操作和管理過渡到一個真正開放的、與平臺無關的環境中。

2.1 系統結構介紹

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

2.2 系統功能設計

本論文討論IPTV點播系統中的內容管理模塊的設計。包括如下:

(1)發布點類型管理;

(2)文件分發管理;

(3)發布點內容管理:

①發布點管理(啟動禁用發布點、查看修改發布點、添加刪除發布點);

②文件管理。

3 ADO.net技術及其應用

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

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

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

通常,使用ADO.NET開發數據庫應用程序應遵循以下幾個步驟:

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

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

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

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

(5)緩存數據;

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

4 ADO.net技術在IPTV點播系統中的應用

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庫環境

因為ADO庫是一組COM動態庫,所以應用程序在調用ADO前,必須初始化OLE/COM庫環境。在MFC應用程序里,一般是在應用程序主類的InitInstance成員函數里用AfxOleInit()初始化OLE/COM庫環境。

4.3 使用ADO基本接口

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

(1)創建Connection對象并連接數據庫

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

②創建Connection對象實例:m_pConnection.CreateInstance(\"ADODB.Connection\");

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

為了統一編程和方便修改,我們創建通用數據連接文件(*.UDL),這樣當數據源改變時,只需修改對應udl文件設置數據源,無需更改軟件程序。下面是訪問不同類型數據源設置ConnectionString的標準:

訪問ODBC數據

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

訪問MS SQL數據庫

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

User ID=username;Password=userPassword\"

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

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

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

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

ConnectionTimeOut用來設置連接的超時時間,需要在Open之前調用。例如,設置超時時間為5秒:

m_pConnection->ConnectionTimeout=5;//設置超時時間為5秒

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

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

State屬性指明當前Connection對象的狀態,O表示關閉,1表示已經打開,我們可以通過讀取這個屬性來作相應的處理,例如:如果已經打開了連接則關閉它。

if(m_PConnection->State)

m_pConnection->Close();

利用Execute方法執行SQL命令:

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

variant t RecordsAffected;

///執行SQL命令:CREATE TABLE創建表格users,users包含四個字段:整型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);

///執行SQL統計命令得到包含記錄條數的記錄集

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

RecordsAffected,adCmdText);

variant t vlndex=(1ong)0;

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

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

CString message;

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

AfxMessageBox(messaRe);///顯示當前記錄條數

(2)創建Command對象并執行SQL命令

定義一個指向Command對象的指針:CommandPtr m_pCommand;

創建Command對象實例:m_pCommand.Creatlnstance(\"ADODB.Command\");

執行SQL命令:

variant t vNULL;vNULL.vt=VT ERROR:

VNULL.scode=DISP E PARAMNOTFOUND;///定義為無參數

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

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

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

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

定義一個指向Recordset對象的指針:RecordsetPtr m_pRecordset;

創建Recordset對象實例:m_pRecordset.CreateInstance(\"ADODB.Recordset\");

查詢取得記錄集:m_pRecordset->Open(\"SELECT *FROM users\",variant t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

遍歷更新記錄集:

variant t vUsername,vBirthday,vID,vOld;

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

參考文獻:

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

[2] senjeev Rohilla,Senthil Nathan,Surbhi Malhotra. 陳君,王寶良,譯. ADO.NET專業項目實例開發[M].北京:中國水利水電出版社,2003.

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

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

主站蜘蛛池模板: 欧美成人精品一区二区| 亚洲成a∧人片在线观看无码| 亚洲国产一区在线观看| 日韩在线成年视频人网站观看| 国产美女免费网站| 国产成人无码Av在线播放无广告| 毛片国产精品完整版| 午夜激情福利视频| 无码一区18禁| 免费一级大毛片a一观看不卡| 亚洲国产中文综合专区在| 高清码无在线看| 国产欧美综合在线观看第七页| 欧美a在线看| 69av在线| 国产人成网线在线播放va| 日韩午夜片| 青青草原国产免费av观看| 免费一级α片在线观看| 亚洲天堂在线免费| 成人综合在线观看| 中文字幕在线观看日本| 亚洲欧洲日产无码AV| 黄色网站不卡无码| 亚洲一道AV无码午夜福利| 国产综合另类小说色区色噜噜| 青青草国产在线视频| AV不卡国产在线观看| 久久综合伊人77777| 免费观看亚洲人成网站| 亚洲男人的天堂网| 四虎国产精品永久在线网址| 在线日本国产成人免费的| 这里只有精品在线播放| 中国黄色一级视频| 天天摸天天操免费播放小视频| 欧美一区二区自偷自拍视频| 中文成人无码国产亚洲| 久久精品视频一| 亚洲av片在线免费观看| 嫩草国产在线| 成人福利在线看| 国产色婷婷视频在线观看| 91免费片| 波多野结衣中文字幕一区| 色婷婷成人| 国产视频一区二区在线观看| 黄色网页在线播放| 麻豆国产在线不卡一区二区| 亚洲日韩第九十九页| 亚洲国产亚综合在线区| 99精品视频播放| 日本免费新一区视频| 亚洲视频无码| 91丨九色丨首页在线播放| 亚洲91精品视频| 国产男女XX00免费观看| 免费又爽又刺激高潮网址 | 中文字幕亚洲乱码熟女1区2区| 天天躁夜夜躁狠狠躁躁88| 国产小视频a在线观看| 欧美第二区| 91视频精品| 成人国内精品久久久久影院| 亚洲 欧美 偷自乱 图片| 四虎亚洲国产成人久久精品| 欧美www在线观看| 国产一级在线观看www色| 久久伊伊香蕉综合精品| 久久99这里精品8国产| 99视频在线观看免费| 国产99视频精品免费观看9e| 亚洲色图欧美在线| 久久久精品无码一二三区| 亚洲中文字幕在线精品一区| 亚洲天堂日韩在线| 国产极品美女在线播放| 国产精品无码一区二区桃花视频| 欧美成人精品在线| 国产精品妖精视频| 九九线精品视频在线观看| 91外围女在线观看|