<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        面向對象在數據庫應用程序中的應用(dotNet)

        來源:懂視網 責編:小采 時間:2020-11-09 07:29:09
        文檔

        面向對象在數據庫應用程序中的應用(dotNet)

        面向對象在數據庫應用程序中的應用(dotNet):面向對象在數據庫應用程序中的應用 (dotNet) 現在的應用程序很大一部分都是與數據庫相關的程序,而寫數據庫程序會涉及到很多數據表,訪問和操縱數據表構成了數據庫應用程序最常見的動作,所以,編寫出高效的程序對于程序員來說是不得不去考慮的。本文將討論
        推薦度:
        導讀面向對象在數據庫應用程序中的應用(dotNet):面向對象在數據庫應用程序中的應用 (dotNet) 現在的應用程序很大一部分都是與數據庫相關的程序,而寫數據庫程序會涉及到很多數據表,訪問和操縱數據表構成了數據庫應用程序最常見的動作,所以,編寫出高效的程序對于程序員來說是不得不去考慮的。本文將討論

        面向對象在數據庫應用程序中的應用 (dotNet) 現在的應用程序很大一部分都是與數據庫相關的程序,而寫數據庫程序會涉及到很多數據表,訪問和操縱數據表構成了數據庫應用程序最常見的動作,所以,編寫出高效的程序對于程序員來說是不得不去考慮的。本文將討論

        面向對象在數據庫應用程序中的應用(dotNet)

        現在的應用程序很大一部分都是與數據庫相關的程序,而寫數據庫程序會涉及到很多數據表,訪問和操縱數據表構成了數據庫應用程序最常見的動作,所以,編寫出高效的程序對于程序員來說是不得不去考慮的。本文將討論這個話題,希望對讀者朋友有所裨益。

        面向對象是當今程序界的普遍編程思想,他具有三個最基本的特征:封裝、繼承和多態。繼承對于代碼的復用非常有效,多態則是指函數(方法)的多種形態,可以通過子類重寫父類的方法來改變對象的行為,在面向對象編程中起到非常重要的作用。那么,在實際應用中,到底能起到什么樣的作用呢?也許使用例子最能表達這個思想。

        比如,我們要寫一個簡單的論壇程序,經過分析,可以得出需要下面的表:用戶表(Users)、版塊表(BBSBlock)、回復表(Reply)、主題表(Topic)等(為了方便代碼的繼承,我把所有表的id號都設成相同的名稱:id)。對于這些表,都有一些相同的操作:瀏覽,刪除,添加和修改。那么,我們是不是對每個表都寫對應的方法來實現呢?顯示,這種方法是笨拙的。而繼承,在這里就會發揮極為重要的作用。思想是:寫一個父類,把這些基本的操作寫好,然后,將每個表抽象成一個類,并繼承剛才創建的父類,此時,所有的子類都具有這些基本操作了。

        我們可以這樣定義父類:

        public class DBBaseClass

        {

        protected string TableName;//表名

        protected SqlConnection con;//連接對象

        public DBBaseClass():this("Users")

        {

        }

        ///

        /// 構造函數

        ///

        /// 表名

        public DBBaseClass(string TableName)

        {

        this.TableName = TableName;

        if(con == null)

        {

        con = new SqlConnection("server=accp-lzh;database=MissBBS;uid=sa;pwd=sa");

        }

        else

        {

        if(con.State == ConnectionState.Open)

        con.Close();

        }

        }

        ///

        /// 獲取數據集

        ///

        /// 如果count為0,則獲取所有數據集,否則獲取指定條數(從頂部)的記錄

        /// 返回DataSet

        public DataSet Select(int count)

        {

        string sql;

        if(count == 0)

        sql = "select * from " + this.TableName ;

        else

        sql = "select top " + count.ToString() + " * from " + this.TableName + " oreder by id desc";

        SqlCommand selectCmd = new SqlCommand(sql,con);

        SqlDataAdapter adapter = new SqlDataAdapter();

        adapter.SelectCommand = selectCmd;

        DataSet ds = new DataSet();

        try

        {

        con.Open();

        adapter.Fill(ds,"BBSTable");

        con.Close();

        }

        catch(Exception)

        {

        return null;

        }

        return ds;

        }

        }

        在這個類中,我們定義了兩個重載的構造函數和一個用來獲取數據集的方法,同時,定義了兩個作用很大的字段,一個是表名,一個是連接對象。當其他類繼承這個類時,就不再需要再次定義表和連接對象了,最主要是的,這兩個字段為我們更好的實現繼承起到了關鍵的作用。

        接下來,我們創建一個子類:Users。這個類是表Users的抽象:

        public class User : DBBaseClass

        {

        ///

        /// 無參構造函數

        ///

        public User():base("Users")

        {

        }

        ///

        /// 構造函數

        ///

        /// 表名

        public User(string TableName) : base(TableName)

        {

        }

        }

        現在,大家可以看出來,我們只是寫了該類的兩個構造函數,就具有返回表中所有數據集的功能了,因為該表繼承了DBBaseClass。

        同樣,我們再寫一個子類:Topic,該類是表Topic的抽象。

        public class Topic : DBBaseClass

        {

        public Topic() : base("Topic")

        {

        }

        public Topic(string TableName) : base(TableName)

        {

        }

        }

        User一樣,該類也同樣具有了返回所有數據集的功能。

        實例化子類時,采用簡單對象工廠設計模式,返回不同類型的對象。

        public class Factory

        {

        public Factory()

        {

        }

        public static DBBaseClass GetObject(string TableName)

        {

        switch(TableName)

        {

        case "Users" :

        return new User();

        case "Topic":

        return new Topic();

        case "BBSBlock":

        return new BBSBlock();

        case "Reply":

        return new Reply();

        case "BBSMaster":

        return new BBSMaster();

        default:

        return new DBBaseClass();

        }

        }

        }

        下面來看一看如何使用:

        User user = (User)Factory.GetObject("Users");

        DataSet ds1 = new DataSet();

        ds1 = user.Select(0);

        Topic topic = (Topic)Factory.GetObject("Topic");

        DataSet ds2 = new DataSet();

        ds2 = topic.Select(0);

        看完之后,您有什么想法?如果您是一個經驗豐富的程序員,這種方法肯定會經常采用,如果您剛剛接觸,理解這種思想還是大有好處的。

        posted on 2004年08月19日 3:28 PM

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        面向對象在數據庫應用程序中的應用(dotNet)

        面向對象在數據庫應用程序中的應用(dotNet):面向對象在數據庫應用程序中的應用 (dotNet) 現在的應用程序很大一部分都是與數據庫相關的程序,而寫數據庫程序會涉及到很多數據表,訪問和操縱數據表構成了數據庫應用程序最常見的動作,所以,編寫出高效的程序對于程序員來說是不得不去考慮的。本文將討論
        推薦度:
        標簽: 中的 應用 程序
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲AV电影院在线观看| 情侣视频精品免费的国产| 亚洲精品国精品久久99热一| 日本高清免费中文在线看| 亚洲&#228;v永久无码精品天堂久久 | 中国人xxxxx69免费视频| 亚洲尹人九九大色香蕉网站| 97av免费视频| 亚洲大成色www永久网址| 最近免费中文字幕4| 狼人大香伊蕉国产WWW亚洲| 免费a级毛片无码av| 岛国岛国免费V片在线观看 | 久久精品夜色噜噜亚洲A∨| 成人无码区免费A∨直播| 亚洲男人的天堂在线播放| 久久精品国产免费观看三人同眠| 国产精品高清视亚洲精品| 永久免费毛片手机版在线看| 色婷婷精品免费视频| 狠狠色伊人亚洲综合成人| 在线视频精品免费| 国产亚洲精品91| 亚洲精品自产拍在线观看动漫| 1000部啪啪未满十八勿入免费| 亚洲av无码一区二区三区天堂| 亚洲一区二区三区偷拍女厕| 精品国产污污免费网站aⅴ | 成人A片产无码免费视频在线观看| 久久精品国产亚洲av成人| 无码av免费毛片一区二区| 亚洲AV成人片无码网站| 国产亚洲精品精华液| 四虎国产精品免费久久| 免费夜色污私人影院网站电影 | 亚洲国产精品成人精品无码区在线| 91高清免费国产自产| 污视频网站免费在线观看| 亚洲电影一区二区| 午夜亚洲福利在线老司机| 四虎在线视频免费观看视频|