<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
        主站蜘蛛池模板: 毛片免费观看视频| 日本三级2019在线观看免费| 国产精品免费看久久久久| 亚洲午夜精品在线| 野花高清在线观看免费3中文| 亚洲天堂福利视频| 免费无码AV电影在线观看| 亚洲国产精品张柏芝在线观看| 国产大片免费网站不卡美女 | 免费一区二区无码视频在线播放 | 在线日本高清免费不卡| 亚洲国产成人久久精品app | 免费在线观看污网站| eeuss影院免费直达入口| 亚洲乱色熟女一区二区三区丝袜| 91视频免费网站| 亚洲精彩视频在线观看| 青春禁区视频在线观看直播免费| 久久亚洲精品成人无码| 久久久久国产成人精品亚洲午夜| 久久免费视频网站| 亚洲免费人成视频观看| 国产高清免费观看| 韩国免费A级毛片久久| 亚洲高清视频免费| 成在线人永久免费视频播放| 无遮挡免费一区二区三区| 图图资源网亚洲综合网站| 永久免费的网站在线观看| 国产亚洲精品美女久久久久| 亚洲成色在线综合网站| 国产在线jyzzjyzz免费麻豆| 国产精品亚洲综合一区在线观看 | 亚洲好看的理论片电影| 天天天欲色欲色WWW免费| 高清永久免费观看| 亚洲AV日韩综合一区尤物| 在线精品亚洲一区二区三区| 成人免费视频69| 久久av免费天堂小草播放| 亚洲色无码专区一区|