亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-21 02:23:22
字體:
來源:轉載
供稿:網友
面向對象在數據庫應用程序中的應用(dotnet)



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



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



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



我們可以這樣定義父類:

public class dbbaseclass

{

protected string tablename;//表名

protected sqlconnection con;//連接對象



public dbbaseclass():this("users")

{

}

/// <summary>

/// 構造函數

/// </summary>

/// <param name="tablename">表名</param>

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();

}

}



/// <summary>

/// 獲取數據集

/// </summary>

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

/// <returns>返回dataset</returns>

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

{

/// <summary>

/// 無參構造函數

/// </summary>

public user():base("users")

{

}



/// <summary>

/// 構造函數

/// </summary>

/// <param name="tablename">表名</param>

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);



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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产v综合ⅴ日韩v欧美大片| 亚洲最大成人免费视频| 日韩av在线导航| 日韩在线激情视频| 亚洲国产高清高潮精品美女| 欧美极品在线视频| 欧美极品少妇xxxxx| 亚洲人成网在线播放| 国产91网红主播在线观看| 国产精品爽黄69天堂a| 日韩av片免费在线观看| 亚洲激情中文字幕| 国产综合在线视频| 国产三级精品网站| 日韩中文字幕在线| 日韩黄色高清视频| 精品国产一区av| 国产精品无av码在线观看| 亚洲色图50p| 国产欧美最新羞羞视频在线观看| 最近2019年手机中文字幕| 精品国产一区av| 国产精品一香蕉国产线看观看| 色婷婷**av毛片一区| 日韩av在线天堂网| 欧美xxxx综合视频| 一区二区在线视频| 国产精品色婷婷视频| 亚洲国产高清高潮精品美女| 国产精品免费久久久久久| 狠狠操狠狠色综合网| 九九热在线精品视频| 国产欧美精品一区二区三区-老狼| 日本国产精品视频| 久久亚洲春色中文字幕| 欧美亚洲一区在线| 麻豆国产va免费精品高清在线| 成人h视频在线观看播放| 911国产网站尤物在线观看| 97久久精品人人澡人人爽缅北| 九色成人免费视频| 亚洲成人免费在线视频| 91黑丝在线观看| 欧美高清不卡在线| 欧美日韩国产成人在线| 欧美激情videoshd| 国产精品久久久久久超碰| 全球成人中文在线| 国产91在线播放九色快色| 亚洲人成啪啪网站| 91免费看片网站| 亚洲乱亚洲乱妇无码| 精品亚洲一区二区三区在线播放| 国产精品白丝jk喷水视频一区| 国产成人精品av| 国产在线a不卡| 色综合天天狠天天透天天伊人| 91高潮在线观看| 亚洲精品黄网在线观看| 欧美孕妇与黑人孕交| 欧美激情免费看| 国产福利精品在线| 久久久久久久久久久久av| www.亚洲一二| 亚洲男人天天操| 91成人福利在线| 亚洲欧美日韩中文在线制服| 国产婷婷97碰碰久久人人蜜臀| 国产噜噜噜噜噜久久久久久久久| 久久影视三级福利片| 亚洲第一偷拍网| 欧美中文字幕在线| 色偷偷噜噜噜亚洲男人| 日韩免费观看av| 国产欧美日韩最新| 欧美日韩国产综合视频在线观看中文| 欧美电影免费观看高清完整| 国产精品91一区| 国产精品极品美女粉嫩高清在线| 日韩精品免费在线视频| 欧美成人精品在线视频| 久久久久久久久久久国产| 国产精品国产三级国产专播精品人| 蜜臀久久99精品久久久久久宅男| 91精品国产综合久久久久久久久| 欧美国产日韩免费| 亚洲国产99精品国自产| 98视频在线噜噜噜国产| 一二美女精品欧洲| 亚洲国产精品系列| 日韩av电影院| 国产精品久久一| 国产成人精彩在线视频九色| 国产美女高潮久久白浆| 伊人av综合网| 欧美日韩精品中文字幕| 日韩专区中文字幕| 欧美激情视频一区| 555www成人网| 国产精品久久久久久av福利软件| 日韩精品视频在线播放| 中文字幕亚洲欧美一区二区三区| 国产日产欧美a一级在线| 日韩av最新在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 一区二区欧美久久| 国产精品免费视频xxxx| 日韩av网站在线| 国产精品久久网| 欧美专区福利在线| 久久精品一本久久99精品| 亚洲奶大毛多的老太婆| 亚洲精品国精品久久99热| 久久777国产线看观看精品| 亚洲日本中文字幕| 神马国产精品影院av| 国产精品一香蕉国产线看观看| 91精品在线看| 精品久久香蕉国产线看观看亚洲| 最近2019中文字幕第三页视频| 国产精品日日摸夜夜添夜夜av| 国产欧美日韩最新| 亚洲xxxx3d| 久久影视电视剧凤归四时歌| 成人免费视频网| 欧美大片在线看免费观看| 成人黄色大片在线免费观看| 国内精品美女av在线播放| 91成人在线视频| 另类天堂视频在线观看| 久久久精品在线| 亚洲国产精品成人va在线观看| 中文字幕日韩av综合精品| 国产福利成人在线| 国产91精品久久久久久| 国产精品视频在线观看| 亚洲精品久久久久久久久久久久| 亚洲一区二区久久久| 国产精品www网站| 26uuu日韩精品一区二区| 欧美激情一二三| 国产不卡精品视男人的天堂| 久久久国产一区二区| 欧美激情视频免费观看| 91精品国产亚洲| 日韩美女中文字幕| 色琪琪综合男人的天堂aⅴ视频| 久久久久久18| 青草热久免费精品视频| 国产aⅴ夜夜欢一区二区三区| 成人精品视频99在线观看免费| 亚洲网站视频福利| 成人午夜在线观看| 日韩高清av一区二区三区| 国产精品中文久久久久久久| 亚洲男人天堂网| 日韩电影中文字幕在线观看| 亚洲欧美日韩在线高清直播| www.亚洲一区| 国产一区二区三区三区在线观看| 国产精品高潮呻吟久久av无限| 欧美日韩亚洲国产一区| 美日韩在线视频| 欧美一级大片在线观看|