六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

面向?qū)ο笤跀?shù)據(jù)庫應(yīng)用程序中的應(yīng)用(dotNet)

[摘要]面向?qū)ο笤跀?shù)據(jù)庫應(yīng)用程序中的應(yīng)用(dotNet) 現(xiàn)在的應(yīng)用程序很大一部分都是與數(shù)據(jù)庫相關(guān)的程序,而寫數(shù)據(jù)庫程序會涉及到很多數(shù)據(jù)表,訪問和操縱數(shù)據(jù)表構(gòu)成了數(shù)據(jù)庫應(yīng)用程序最常見的動作,所...
面向?qū)ο笤跀?shù)據(jù)庫應(yīng)用程序中的應(yīng)用(dotNet)



現(xiàn)在的應(yīng)用程序很大一部分都是與數(shù)據(jù)庫相關(guān)的程序,而寫數(shù)據(jù)庫程序會涉及到很多數(shù)據(jù)表,訪問和操縱數(shù)據(jù)表構(gòu)成了數(shù)據(jù)庫應(yīng)用程序最常見的動作,所以,編寫出高效的程序?qū)τ诔绦騿T來說是不得不去考慮的。本文將討論這個話題,希望對讀者朋友有所裨益。



面向?qū)ο笫钱?dāng)今程序界的普遍編程思想,他具有三個最基本的特征:封裝、繼承和多態(tài)。繼承對于代碼的復(fù)用非常有效,多態(tài)則是指函數(shù)(方法)的多種形態(tài),可以通過子類重寫父類的方法來改變對象的行為,在面向?qū)ο缶幊讨衅鸬椒浅V匾淖饔谩D敲矗趯?shí)際應(yīng)用中,到底能起到什么樣的作用呢?也許使用例子最能表達(dá)這個思想。



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



我們可以這樣定義父類:

public class DBBaseClass

{

protected string TableName;//表名

protected SqlConnection con;//連接對象



public DBBaseClass():this("Users")

{

}

/// <summary>

/// 構(gòu)造函數(shù)

/// </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>

/// 獲取數(shù)據(jù)集

/// </summary>

/// <param name="count">如果count為0,則獲取所有數(shù)據(jù)集,否則獲取指定條數(shù)(從頂部)的記錄</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;

}



}



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



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

public class User : DBBaseClass

{

/// <summary>

/// 無參構(gòu)造函數(shù)

/// </summary>

public User():base("Users")

{

}



/// <summary>

/// 構(gòu)造函數(shù)

/// </summary>

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

public User(string TableName) : base(TableName)

{

}

}



現(xiàn)在,大家可以看出來,我們只是寫了該類的兩個構(gòu)造函數(shù),就具有返回表中所有數(shù)據(jù)集的功能了,因為該表繼承了DBBaseClass。



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

public class Topic : DBBaseClass

{

public Topic() : base("Topic")

{

}



public Topic(string TableName) : base(TableName)

{

}

}



和User一樣,該類也同樣具有了返回所有數(shù)據(jù)集的功能。



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

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



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




主站蜘蛛池模板: 色综合久久综合网观看 | 亚洲国产精久久久久久久 | 天天逼逼| 色天天综合久久久久综合片 | 欧美一区二区久久精品 | 日本v片免费一区二区三区 日本vs欧美一区二区三区 | 欧美特黄一级大片 | 一级成人a免费视频 | 欧美一区不卡二区不卡三区 | 亚洲综合色播 | 日本激情在线观看 | 四虎国产精品免费观看 | 日韩国产精品99久久久久久 | 青青草国产免费久久久下载 | 婷婷综合在线观看丁香 | 天堂资源在线中文 | 天天草天天射 | 手机看片自拍自拍自拍自视频 | 日韩成人精品 | 日本七大伦理经典在线观看 | 青草成人 | 中文字幕在线视频不卡 | 日日夜夜网 | 日韩成人在线观看视频 | 亚洲一区综合在线播放 | 亚洲高清免费 | 伊人久久免费视频 | 天天综合天天做 | 日韩成人免费 | 特级做a爰片毛片免费看一区 | 一级毛片子 | 青春草视频下载 | 在线v| 在线视频中文字幕 | 日韩一区国产二区欧美三区 | 日本大片成人免费网址 | 欧美中文字幕一二三四区 | 最近韩国中文字幕更新 | 欧美伊人久久久久久久久影院 | 在线播放高清国语自产拍免费 | 五月婷婷天 |