新農(nóng)保生存認證系統(tǒng)-實訓(xùn)指導(dǎo)書_第1頁
新農(nóng)保生存認證系統(tǒng)-實訓(xùn)指導(dǎo)書_第2頁
新農(nóng)保生存認證系統(tǒng)-實訓(xùn)指導(dǎo)書_第3頁
新農(nóng)保生存認證系統(tǒng)-實訓(xùn)指導(dǎo)書_第4頁
新農(nóng)保生存認證系統(tǒng)-實訓(xùn)指導(dǎo)書_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

實訓(xùn)指導(dǎo)書在線考試系統(tǒng)實訓(xùn)指導(dǎo)書文件狀態(tài):[]草稿[√]正式發(fā)布[]正在修改文件標識當前版本1.0.0作者宇祥科技完成日期2014-08-05版本歷史版本/狀態(tài)修訂人修改日期備注1.0.0宇祥科技2014-08-05

新農(nóng)保生存系統(tǒng)需求描述主要模塊根據(jù)中央文件,對農(nóng)村60周歲以上的老年人加大養(yǎng)老保險補助力度,把符合領(lǐng)取養(yǎng)老保險金的老年人,登記造冊,并發(fā)卡關(guān)聯(lián)到保險系統(tǒng),按時把補助金發(fā)放到農(nóng)民手中。針對這一情況我公司專門為其研發(fā)了一套農(nóng)村參保人員認證系統(tǒng),主要負責管理農(nóng)村老人的基本信息和銀行賬號及其交易明細。本系統(tǒng)需要具備以下功能模塊:參保人員信息管理模塊賬戶信息管理模塊管理員信息管理模塊項目目的熟悉C#OOP面向?qū)ο笏枷胧炀毷褂肅#中的集合類熟練使用C#操作操作Officeexcel的方法熟練運用ADO.NET的對數(shù)據(jù)庫進行訪問操作。熟練搭建基于.NET平臺的三層架構(gòu)了解設(shè)計模式中的工廠模式及其特點了解第三方控件DevExpress,并使用DevExpress創(chuàng)建Office2007風格的窗體相關(guān)知識點準備開發(fā)工具IDE:VisualStudio2010開發(fā)工具的使用SQLServer2008數(shù)據(jù)庫的使用C#語言:OOP面向?qū)ο笏枷隒#基本語法Microsoft.Office組件C#中的集合類.NET平臺的三層架構(gòu)WinformC/S應(yīng)用程序開發(fā):Winform窗體使用DevExpress第三方控件ADO.NET使用ADO.NET訪問SQLServer2008數(shù)據(jù)庫ADO.NET常用對象的使用項目實訓(xùn)準備步驟使用SQLSserver2008設(shè)計數(shù)據(jù)庫并錄入測試數(shù)據(jù)按照數(shù)據(jù)庫結(jié)構(gòu)說明書建立數(shù)據(jù)庫和各種約束。并錄入相應(yīng)的測試數(shù)據(jù)。項目的主要功能分析:功能編號功能名稱備注01參保人員信息管理0101復(fù)合條件查詢參保信息0102導(dǎo)入Excel種的人員信息0103修改參保人員狀態(tài)0104查看參保人員詳細信息0105添加新人員02賬戶信息管理0201賬戶信息復(fù)合查詢0202未開戶人員信息查詢0203為未開戶人員分配賬戶03管理員信息管理0301添加新管理員0302刪除管理員0303修改管理員信息0304修改當前管理員的密碼詳細說明參見新農(nóng)保生存認證系統(tǒng)設(shè)計說明書。主要界面分析:窗體名稱功能名稱備注FrmLogin系統(tǒng)登錄窗體FrmMain系統(tǒng)主窗體FrmAddPeople添加新參保人員窗體FrmOpenAccount開戶設(shè)置窗體FrmShowPeople查看參保人員詳細信息窗體FrmManageAdmin管理員信息管理窗體FrmAddAdmin添加管理員窗體FrmModifyAdmin修改管理員信息窗體FrmModifyPWD修改當前用戶密碼窗體輔助類分析:類名功能描述備注AccountIDHelper銀行卡號生成類方法名功能描述getAccountID負責生成銀行卡號,銀行卡號要求如下:銀行卡共19位數(shù)字,其中前六位是銀行卡行業(yè)管理部門允許某個省的某家銀行銀行卡的開頭標示。第7、8位代表的是該省某個地區(qū)從第9位到第16位是順序號。第17、18、19位是隨機數(shù)代表的是校檢位屬性名功能描述beginID私用的靜態(tài)只讀屬性用于保存銀行卡號的前6位類名功能描述備注UserHelper保存當前登錄的管理員信息屬性名功能描述ClientUser靜態(tài)屬性,類型為Admin類型負責保存管理員的詳細信息項目結(jié)構(gòu)分析:本系統(tǒng)采用的是三層架構(gòu)+數(shù)據(jù)訪問層的工廠模式。項目實訓(xùn)實施步驟第一次編碼課:任務(wù)一:創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫名為DBCenter任務(wù)二:創(chuàng)建數(shù)據(jù)表:表OldMan表名OldMan列名數(shù)據(jù)類型(精度范圍)空/非空約束條件其它說明Idint非空主鍵Namevarchar(50)非空參保人姓名ICvarchar(18)非空唯一身份證號碼NationVarchar(20)非空默認漢族民族BirthdayDate非空生日AddressVarchar(100)非空家庭地址ZIPVarchar(10)空郵編ContactName1varchar(50)非空第一聯(lián)系姓名ContactPhone1varchar(50)非空第一聯(lián)系人電話ContactIC1varchar(50)空與本人關(guān)系ContactName2varchar(50)空第二聯(lián)系人姓名ContactPhone2varchar(50)空第二聯(lián)系人電話ContactIC2varchar(50)空與本人關(guān)系Statevarchar(50)非空參保人生存狀態(tài)VillageIDint非空Village表的外鍵所屬村組補充說明 表TradeType表名UserState列名數(shù)據(jù)類型(精度范圍)空/非空約束條件其它說明IDint非空主鍵TradeTypeVarchar(50)非空交易類型補充說明表Village表名Village村組信息表列名數(shù)據(jù)類型(精度范圍)空/非空約束條件其它說明IDint非空主鍵VillageNamevarchar(100)非空村組名補充說明表TradeInfo表名TradeInfo交易明細表列名數(shù)據(jù)類型(精度范圍)空/非空約束條件其它說明IDint非空主鍵AccountIDint非空Account表的外鍵賬戶號TradeTimedatettime非空交易時間TradeMoneyMoney非空交易金額TradeTypeInt非空TradeType表的外鍵交易類型TradeDescriptionVarchar(200)空交易詳細補充說明表Account表名Account賬戶信息表列名數(shù)據(jù)類型(精度范圍)空/非空約束條件其它說明IDint非空主鍵AccountIDVarchar(50)非空唯一銀行賬號AccountBankvarchar(50)非空開戶銀行OpenTimeDateTime非空開戶時間AccountBlancemoney非空賬戶余額OldManIDint非空OldMan表的外鍵所屬人IDAccountTypeVarchar(20)非空默認正常賬戶狀態(tài)AccountPwdVarchar(6)非空賬戶秘密補充說明表Admin表名Account列名數(shù)據(jù)類型(精度范圍)空/非空約束條件其它說明IDint非空主鍵AdminNameVarchar(50)非空管理員姓名LoginNamevarchar(50)非空唯一管理員登錄名LoginPwdDateTime非空登錄密碼IsSuperbit非空是否為超級管理員IsEnablebit非空是否可用IsCanDeletebit非空是否可以被刪除LastLoginDateTime非空最后一次登錄時間補充說明任務(wù)三:為數(shù)據(jù)庫錄入合適的測試數(shù)據(jù),方便后續(xù)開發(fā)使用任務(wù)四:搭建整個項目的系統(tǒng)架構(gòu),并添加類庫相互之間的引用第一步:在VS2010中創(chuàng)建解決方案Project-6如下圖所示:第二步:在Project-6項目中選擇【解決方案資源管理器】->單擊鼠標右鍵,在右鍵菜單中選擇【添加】->單擊【新建項目】如下圖所示:在彈出的【添加新項目】窗口中選擇類庫項目創(chuàng)建DataModel數(shù)據(jù)模型層。如下圖所示:重復(fù)上述操作完成IDAL類庫、SQLDAL類庫、DALFactory類庫、BLL類庫的創(chuàng)建,最后添加【W(wǎng)indows窗體應(yīng)用程序】名稱為:ProjectUI,并將ProjectUI設(shè)定為啟動項目。完成后整個項目結(jié)構(gòu)體如下:在6個項目中添加彼此的引用。要求如下:ProjectUI:引用DataModel、BLLBLL:引用DataModel、IDAL、DALFactoryIDAL:引用DataModelSQLDAL:引用DataModel、IDALDALFactory:引用DataModel、IDAL、SQLDAL第五步:按照數(shù)據(jù)庫的結(jié)構(gòu)編寫DataModel層,該層中的類圖如下:第二次編碼課:第一步:在IDAL層中編寫數(shù)據(jù)庫操作接口。各個接口的作用和所屬方法介紹如下表所示:ITradeType接口接口名ITradeType方法名及其參數(shù)方法介紹參數(shù)介紹List<TradeType>getAllTradeType()獲取所有的交易類型TradeTypegetTypeById(intid)根據(jù)交易類型ID查詢交易類型交易類型IDTradeTypegetTypeByName(stringtypeName)根據(jù)交易類型得到交易對象交易類型intaddTradeType(TradeTypetradeType)添加新交易類型交易類型對象intupdateTradeType(TradeTypetradeType)更新類型交易類型對象intdeleteTypeById(intid)根據(jù)類型ID刪除類型交易類型ID補充說明IAccount接口接口名IAccount方法名及其參數(shù)方法介紹參數(shù)介紹List<Account>getAccountByCondition(IDictionary<string,string>searchCondition)按照多條件進行復(fù)合查詢searchCondition中Key:要查詢的條件字段Value:條件值A(chǔ)ccountgetAccountByAccountID(stringaccountID)根據(jù)賬號查詢賬戶信息賬號List<Account>getAllAccount()查詢?nèi)抠~戶信息AccountgetAccountById(intid)根據(jù)賬號ID查詢賬戶信息賬戶IDAccountgetAccountByOldManID(intmanID)根據(jù)參保人ID查詢賬戶信息參保人IDintaddAccount(AccountnewAccount)添加新賬戶新賬戶intupdateAccount(Accountaccount)更新賬戶要被更新的賬戶對象intupdateAccountBlance(intaccountID,doubleblance)更新指定賬戶的余額accountID:賬號Blance:新余額intdeleteAccountByID(intaccountID)按照賬號刪除賬戶stringgetLastAccountID()得到最后一個賬戶的賬號補充說明IOldMan接口接口名IOldMan方法名及其參數(shù)方法介紹參數(shù)介紹List<OldMan>getAllMan()查詢所有參保人OldMangetManById(intid)按照參保人ID查詢參保人參保人IDList<OldMan>getManByName(stringname)按照參保人姓名查詢參保人參保人姓名List<OldMan>getManByIC(stringic)按照參保人身份證號查詢參保人List<OldMan>getManByVillage(intvillageID)按照村組ID查詢參保人村組IDList<OldMan>getManBySex(stringsex)按照性別參訓(xùn)參保人性別List<OldMan>getNoAccountMan(string[]columnName,string[]columnValue)多條件復(fù)合查詢參保人信息columnName:條件字段名columnValue:條件值intaddOldMan(OldManman)添加新參保人intupdateOldMan(OldManman)更新參保人信息intdeleteOldManById(intid)按照參保人ID刪除補充說明IAdmin接口接口名IAdmin方法名及其參數(shù)方法介紹參數(shù)介紹AdminadminLogin(stringloginName,stringloginPwd)登錄操作loginName:登錄名loginPwd:登錄密碼AdmingetAdminById(intadminID)按照ID查詢管理員管理員IDintaddAdmin(Adminamdin)添加管理員管理員對象intchangeAdmin(Adminadmin)修改管理員信息要被修改的管理員對象intchangLoginTime(intadminID,DateTimeloginTIme)改變最后一次登錄時間adminID:管理員IDloginTime:登錄時間intchangeLoginPwd(intadminID,stringpwd)修改密碼adminID:管理員IDPwd:新密碼intdeleteAdmin(intadminID)按照管理員ID刪除管理員管理員IDList<Admin>getAllAdmin()得到所有管理員AdminGetAdminInfobyLoginName(stringloginName)按照管理員的登錄名查詢管理員管理員的登錄名補充說明IVillage接口接口名IAdmin方法名及其參數(shù)方法介紹參數(shù)介紹List<Village>getAllVillage()得到所有村組VillagegetVillageByID(intid)按照村組ID得到村組村組IDVillagegetVillageByName(stringvillageName)按照村組名查詢村組村組名intaddVillage(Villagevillage)添加村組新村組對象intupdateVillage(Villagevilage)更新村組要被更新的村組對象intdeleteVillageById(intid)根據(jù)村組ID刪除村組村組ID補充說明ITrdeInfo接口接口名IAdmin方法名及其參數(shù)方法介紹參數(shù)介紹List<TradeInfo>getTradeInfoByAccountID(intaccountID)按照賬戶ID查詢該賬戶的所有交易明細賬戶IDintAddTradeInfo(TradeInfotradeInfo)添加交易明細交易明細對象intupdateTradeInfo(TradeInfotradeInfo)更新交易明細要被更新的交易明細補充說明由于本次實訓(xùn)項目中不涵蓋交易明細操作,因此ITradeInfo和ITradeType接口可以酌情編寫。第二步:在SQLDAL類庫中編寫SQlHelper數(shù)據(jù)庫操作類,代碼如下:///<summary>///數(shù)據(jù)庫的通用訪問代碼///此類為抽象類,不允許實例化,在應(yīng)用時直接調(diào)用即可///</summary>publicabstractclassSqlHelper{//獲取數(shù)據(jù)庫連接字符串,其屬于靜態(tài)變量且只讀,項目中所有文檔可以直接使用,但不能修改publicstaticreadonlystringConnectionStringLocalTransaction=ConfigurationManager.ConnectionStrings["connString"].ConnectionString;//publicstaticreadonlystringConnectionStringInventoryDistributedTransaction=ConfigurationManager.ConnectionStrings["SQLConnString2"].ConnectionString;//publicstaticreadonlystringConnectionStringOrderDistributedTransaction=ConfigurationManager.ConnectionStrings["SQLConnString3"].ConnectionString;//publicstaticreadonlystringConnectionStringProfile=ConfigurationManager.ConnectionStrings["SQLProfileConnString"].ConnectionString;//哈希表用來存儲緩存的參數(shù)信息,哈希表可以存儲任意類型的參數(shù)。privatestaticHashtableparmCache=Hashtable.Synchronized(newHashtable());///<summary>///執(zhí)行一個不需要返回值的SqlCommand命令,通過指定專用的連接字符串。///使用參數(shù)數(shù)組形式提供參數(shù)列表///</summary>///<remarks>///使用示例:///intresult=ExecuteNonQuery(connString,CommandType.StoredProcedure,"PublishOrders",newSqlParameter("@prodid",24));///</remarks>///<paramname="connectionString">一個有效的數(shù)據(jù)庫連接字符串</param>///<paramname="commandType">SqlCommand命令類型(存儲過程,T-SQL語句,等等。)</param>///<paramname="commandText">存儲過程的名字或者T-SQL語句</param>///<paramname="commandParameters">以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表</param>///<returns>返回一個數(shù)值表示此SqlCommand命令執(zhí)行后影響的行數(shù)</returns>publicstaticintExecuteNonQuery(CommandTypecmdType,stringcmdText,paramsSqlParameter[]commandParameters){SqlCommandcmd=newSqlCommand();using(SqlConnectionconn=newSqlConnection(ConnectionStringLocalTransaction)){//通過PrePareCommand方法將參數(shù)逐個加入到SqlCommand的參數(shù)集合中PrepareCommand(cmd,conn,null,cmdType,cmdText,commandParameters);intval=cmd.ExecuteNonQuery();//清空SqlCommand中的參數(shù)列表cmd.Parameters.Clear();returnval;}}///<summary>///執(zhí)行一條不返回結(jié)果的SqlCommand,通過一個已經(jīng)存在的數(shù)據(jù)庫連接///使用參數(shù)數(shù)組提供參數(shù)///</summary>///<remarks>///使用示例:///intresult=ExecuteNonQuery(conn,CommandType.StoredProcedure,"PublishOrders",newSqlParameter("@prodid",24));///</remarks>///<paramname="conn">一個現(xiàn)有的數(shù)據(jù)庫連接</param>///<paramname="commandType">SqlCommand命令類型(存儲過程,T-SQL語句,等等。)</param>///<paramname="commandText">存儲過程的名字或者T-SQL語句</param>///<paramname="commandParameters">以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表</param>///<returns>返回一個數(shù)值表示此SqlCommand命令執(zhí)行后影響的行數(shù)</returns>publicstaticintExecuteNonQuery(SqlConnectionconnection,CommandTypecmdType,stringcmdText,paramsSqlParameter[]commandParameters){SqlCommandcmd=newSqlCommand();PrepareCommand(cmd,connection,null,cmdType,cmdText,commandParameters);intval=cmd.ExecuteNonQuery();cmd.Parameters.Clear();returnval;}///<summary>///執(zhí)行一條不返回結(jié)果的SqlCommand,通過一個已經(jīng)存在的數(shù)據(jù)庫事物處理///使用參數(shù)數(shù)組提供參數(shù)///</summary>///<remarks>///使用示例:///intresult=ExecuteNonQuery(trans,CommandType.StoredProcedure,"PublishOrders",newSqlParameter("@prodid",24));///</remarks>///<paramname="trans">一個存在的sql事物處理</param>///<paramname="commandType">SqlCommand命令類型(存儲過程,T-SQL語句,等等。)</param>///<paramname="commandText">存儲過程的名字或者T-SQL語句</param>///<paramname="commandParameters">以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表</param>///<returns>返回一個數(shù)值表示此SqlCommand命令執(zhí)行后影響的行數(shù)</returns>publicstaticintExecuteNonQuery(SqlTransactiontrans,CommandTypecmdType,stringcmdText,paramsSqlParameter[]commandParameters){SqlCommandcmd=newSqlCommand();PrepareCommand(cmd,trans.Connection,trans,cmdType,cmdText,commandParameters);intval=cmd.ExecuteNonQuery();cmd.Parameters.Clear();returnval;}///<summary>///執(zhí)行一條返回結(jié)果集的SqlCommand命令,通過專用的連接字符串。///使用參數(shù)數(shù)組提供參數(shù)///</summary>///<remarks>///使用示例:///SqlDataReaderr=ExecuteReader(connString,CommandType.StoredProcedure,"PublishOrders",newSqlParameter("@prodid",24));///</remarks>///<paramname="connectionString">一個有效的數(shù)據(jù)庫連接字符串</param>///<paramname="commandType">SqlCommand命令類型(存儲過程,T-SQL語句,等等。)</param>///<paramname="commandText">存儲過程的名字或者T-SQL語句</param>///<paramname="commandParameters">以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表</param>///<returns>返回一個包含結(jié)果的SqlDataReader</returns>publicstaticSqlDataReaderExecuteReader(CommandTypecmdType,stringcmdText,paramsSqlParameter[]commandParameters){SqlCommandcmd=newSqlCommand();SqlConnectionconn=newSqlConnection(ConnectionStringLocalTransaction);//在這里使用try/catch處理是因為如果方法出現(xiàn)異常,則SqlDataReader就不存在,//CommandBehavior.CloseConnection的語句就不會執(zhí)行,觸發(fā)的異常由catch捕獲。//關(guān)閉數(shù)據(jù)庫連接,并通過throw再次引發(fā)捕捉到的異常。try{PrepareCommand(cmd,conn,null,cmdType,cmdText,commandParameters);SqlDataReaderrdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);cmd.Parameters.Clear();returnrdr;}catch(Exceptionex){conn.Close();Console.WriteLine(ex.Message);throw;}}///<summary>///執(zhí)行一條返回第一條記錄第一列的SqlCommand命令,通過專用的連接字符串。///使用參數(shù)數(shù)組提供參數(shù)///</summary>///<remarks>///使用示例:///Objectobj=ExecuteScalar(connString,CommandType.StoredProcedure,"PublishOrders",newSqlParameter("@prodid",24));///</remarks>///<paramname="connectionString">一個有效的數(shù)據(jù)庫連接字符串</param>///<paramname="commandType">SqlCommand命令類型(存儲過程,T-SQL語句,等等。)</param>///<paramname="commandText">存儲過程的名字或者T-SQL語句</param>///<paramname="commandParameters">以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表</param>///<returns>返回一個object類型的數(shù)據(jù),可以通過Convert.To{Type}方法轉(zhuǎn)換類型</returns>publicstaticobjectExecuteScalar(CommandTypecmdType,stringcmdText,paramsSqlParameter[]commandParameters){SqlCommandcmd=newSqlCommand();using(SqlConnectionconnection=newSqlConnection(ConnectionStringLocalTransaction)){PrepareCommand(cmd,connection,null,cmdType,cmdText,commandParameters);objectval=cmd.ExecuteScalar();cmd.Parameters.Clear();returnval;}}///<summary>///執(zhí)行一條返回第一條記錄第一列的SqlCommand命令,通過已經(jīng)存在的數(shù)據(jù)庫連接。///使用參數(shù)數(shù)組提供參數(shù)///</summary>///<remarks>///使用示例:///Objectobj=ExecuteScalar(connString,CommandType.StoredProcedure,"PublishOrders",newSqlParameter("@prodid",24));///</remarks>///<paramname="conn">一個已經(jīng)存在的數(shù)據(jù)庫連接</param>///<paramname="commandType">SqlCommand命令類型(存儲過程,T-SQL語句,等等。)</param>///<paramname="commandText">存儲過程的名字或者T-SQL語句</param>///<paramname="commandParameters">以數(shù)組形式提供SqlCommand命令中用到的參數(shù)列表</param>///<returns>返回一個object類型的數(shù)據(jù),可以通過Convert.To{Type}方法轉(zhuǎn)換類型</returns>publicstaticobjectExecuteScalar(SqlConnectionconnection,CommandTypecmdType,stringcmdText,paramsSqlParameter[]commandParameters){SqlCommandcmd=newSqlCommand();PrepareCommand(cmd,connection,null,cmdType,cmdText,commandParameters);objectval=cmd.ExecuteScalar();cmd.Parameters.Clear();returnval;}///<summary>///緩存參數(shù)數(shù)組///</summary>///<paramname="cacheKey">參數(shù)緩存的鍵值</param>///<paramname="cmdParms">被緩存的參數(shù)列表</param>publicstaticvoidCacheParameters(stringcacheKey,paramsSqlParameter[]commandParameters){parmCache[cacheKey]=commandParameters;}///<summary>///獲取被緩存的參數(shù)///</summary>///<paramname="cacheKey">用于查找參數(shù)的KEY值</param>///<returns>返回緩存的參數(shù)數(shù)組</returns>publicstaticSqlParameter[]GetCachedParameters(stringcacheKey){SqlParameter[]cachedParms=(SqlParameter[])parmCache[cacheKey];if(cachedParms==null)returnnull;//新建一個參數(shù)的克隆列表SqlParameter[]clonedParms=newSqlParameter[cachedParms.Length];//通過循環(huán)為克隆參數(shù)列表賦值for(inti=0,j=cachedParms.Length;i<j;i++)//使用clone方法復(fù)制參數(shù)列表中的參數(shù)clonedParms[i]=(SqlParameter)((ICloneable)cachedParms[i]).Clone();returnclonedParms;}///<summary>///為執(zhí)行命令準備參數(shù)///</summary>///<paramname="cmd">SqlCommand命令</param>///<paramname="conn">已經(jīng)存在的數(shù)據(jù)庫連接</param>///<paramname="trans">數(shù)據(jù)庫事物處理</param>///<paramname="cmdType">SqlCommand命令類型(存儲過程,T-SQL語句,等等。)</param>///<paramname="cmdText">Commandtext,T-SQL語句例如Select*fromProducts</param>///<paramname="cmdParms">返回帶參數(shù)的命令</param>privatestaticvoidPrepareCommand(SqlCommandcmd,SqlConnectionconn,SqlTransactiontrans,CommandTypecmdType,stringcmdText,SqlParameter[]cmdParms){//判斷數(shù)據(jù)庫連接狀態(tài)if(conn.State!=ConnectionState.Open)conn.Open();cmd.Connection=conn;cmd.CommandText=cmdText;//判斷是否需要事物處理if(trans!=null)cmd.Transaction=trans;cmd.CommandType=cmdType;if(cmdParms!=null){foreach(SqlParameterparmincmdParms)cmd.Parameters.Add(parm);}}}第三步:在SQLDAL類庫中編寫IDAL類庫中各個接口對應(yīng)的實現(xiàn)類在SQLDAL類庫中編寫IVillage接口的實現(xiàn)類,代碼如下:namespaceSQLDAL{publicclassVillage:IVillage{publicList<DataModel.Village>getAllVillage(){stringsql="select*fromVillage";List<DataModel.Village>list=null;SqlDataReaderreader=SqlHelper.ExecuteReader(CommandType.Text,sql,null);if(reader.HasRows){list=newList<DataModel.Village>();while(reader.Read()){DataModel.Villagevillage=newDataModel.Village();village.Id=reader.GetInt32(0);village.VillageName=reader.GetString(1);list.Add(village);}}reader.Close();returnlist;}publicDataModel.VillagegetVillageByID(intid){DataModel.Villagevillage=null;stringsql="select*fromVillagewhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@id",id)};SqlDataReaderreader=SqlHelper.ExecuteReader(CommandType.Text,sql,paras);if(reader.Read()){village=newDataModel.Village();village.Id=id;village.VillageName=reader.GetString(1);}reader.Close();returnvillage;}publicintaddVillage(DataModel.Villagevillage){stringsql="insertintoVillagevalues(@village)";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@village",village.VillageName)};introwCount=0;rowCount=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);returnrowCount;}publicintupdateVillage(DataModel.Villagevilage){stringsql="updateVillagesetVillageName=@villagewhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@village",vilage.VillageName),newSqlParameter("@id",vilage.Id)};introwCount=0;rowCount=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);returnrowCount;}publicintdeleteVillageById(intid){stringsql="deletefromVillagewhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@id",id)};introwCount=0;rowCount=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);returnrowCount;}publicDataModel.VillagegetVillageByName(stringvillageName){DataModel.Villagevillage=null;stringsql="select*fromVillagewhereVillageName=@name";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@name",villageName)};SqlDataReaderreader=SqlHelper.ExecuteReader(CommandType.Text,sql,paras);if(reader.Read()){village=newDataModel.Village();village.Id=reader.GetInt32(0);village.VillageName=reader.GetString(1);}reader.Close();returnvillage;}}}在SQLDAL類庫中編寫編寫IAdmin接口的實現(xiàn)類,代碼如下:publicclassAdmin:IAdmin{publicintaddAdmin(DataModel.Adminadmin){stringsql="insertintoAdmin(AdminName,LoginName,LoginPwd,IsSuper,IsEnable,IsCandelete)values(@adminName,@loginName,@loginPwd,@isSuper,@isEnable,@isCanDelete)";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@adminName",admin.AdminName),newSqlParameter("@loginName",admin.LoginName),newSqlParameter("@loginPwd",admin.LoginPwd),newSqlParameter("@isSuper",admin.IsSuper),newSqlParameter("@isEnable",admin.IsEnable),newSqlParameter("@isCanDelete",admin.IsCanDelete),};intcount=0;try{count=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);}catch(Exceptionex){thrownewException(ex.Message);}returncount;}publicintchangeAdmin(DataModel.Adminadmin){stringsql="updateAdminsetAdminName=@adminName,LoginName=@loginName,LoginPwd=@loginPwd,IsSuper=@isSuper,IsEnable=@isEnable,IsCandelete=@isCanDeletewhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@adminName",admin.AdminName),newSqlParameter("@loginName",admin.LoginName),newSqlParameter("@loginPwd",admin.LoginPwd),newSqlParameter("@isSuper",admin.IsSuper),newSqlParameter("@isEnable",admin.IsEnable),newSqlParameter("@isCanDelete",admin.IsCanDelete),newSqlParameter("@id",admin.ID)};intcount=0;try{count=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);}catch(Exceptionex){thrownewException(ex.Message);}returncount;}publicintchangLoginTime(intadminID,DateTimeloginTIme){stringsql="updateAdminsetLastLogin=@timewhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@time",loginTIme),newSqlParameter("@id",adminID)};intcount=0;try{count=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);}catch(Exceptionex){thrownewException(ex.Message);}returncount;}publicintchangeLoginPwd(intadminID,stringpwd){stringsql="updateAdminsetLoginPwd=@pwdwhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@pwd",pwd),newSqlParameter("@id",adminID)};intcount=0;try{count=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);}catch(Exceptionex){thrownewException(ex.Message);}returncount;}publicintdeleteAdmin(intadminID){stringsql="deleteAdminwhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@id",adminID)};intcount=0;try{count=SqlHelper.ExecuteNonQuery(CommandType.Text,sql,paras);}catch(Exceptionex){thrownewException(ex.Message);}returncount;}publicList<DataModel.Admin>getAllAdmin(){List<DataModel.Admin>adminList=null;stringsql="select*fromAdmin";SqlDataReaderreader=SqlHelper.ExecuteReader(CommandType.Text,sql,null);if(reader.HasRows){adminList=newList<DataModel.Admin>();while(reader.Read()){DataModel.Adminadmin=newDataModel.Admin();admin.ID=reader.GetInt32(0);admin.AdminName=reader.GetString(1);admin.LoginName=reader.GetString(2);admin.LoginPwd=reader.GetString(3);admin.IsSuper=reader.GetBoolean(4);admin.IsEnable=reader.GetBoolean(5);admin.IsCanDelete=reader.GetBoolean(6);if(!reader.IsDBNull(7)){admin.LastLogin=reader.GetDateTime(7);}adminList.Add(admin);}}reader.Close();returnadminList;}publicDataModel.AdminadminLogin(stringloginName,stringloginPwd){stringsql="select*fromAdminwhereLoginName=@loginNameandLoginPwd=@loginPwd";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@loginName",loginName),newSqlParameter("@loginPwd",loginPwd)};DataModel.Adminadmin=null;SqlDataReaderreader=SqlHelper.ExecuteReader(CommandType.Text,sql,paras);if(reader.Read()){admin=newDataModel.Admin();admin.ID=reader.GetInt32(0);admin.AdminName=reader.GetString(1);admin.LoginName=reader.GetString(2);admin.LoginPwd=reader.GetString(3);admin.IsSuper=reader.GetBoolean(4);admin.IsEnable=reader.GetBoolean(5);admin.IsCanDelete=reader.GetBoolean(6);if(!reader.IsDBNull(7)){admin.LastLogin=reader.GetDateTime(7);}}reader.Close();returnadmin;}publicDataModel.AdmingetAdminById(intadminID){stringsql="select*fromAdminwhereID=@id";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@id",adminID),};DataModel.Adminadmin=null;SqlDataReaderreader=SqlHelper.ExecuteReader(CommandType.Text,sql,paras);if(reader.Read()){admin=newDataModel.Admin();admin.ID=reader.GetInt32(0);admin.AdminName=reader.GetString(1);admin.LoginName=reader.GetString(2);admin.LoginPwd=reader.GetString(3);admin.IsSuper=reader.GetBoolean(4);admin.IsEnable=reader.GetBoolean(5);admin.IsCanDelete=reader.GetBoolean(6);if(!reader.IsDBNull(7)){admin.LastLogin=reader.GetDateTime(7);}}reader.Close();returnadmin;}publicDataModel.AdminGetAdminInfobyLoginName(stringloginName){stringsql="select*fromAdminwhereLoginName=@loginName";SqlParameter[]paras=newSqlParameter[]{newSqlParameter("@loginName",loginName),};DataModel.Adminadmin=null;SqlDataReaderreader=SqlHelper.ExecuteReader(CommandType.Text,sql,paras);if(reader.Read()){admin=newDataModel.Admin();admin.ID=reader.GetInt32(0);admin.AdminName=reader.GetString(1);admin.LoginName=reader.GetString(2);admin.LoginPwd=reader.GetString(3);admin.IsSuper=reader.GetBoolean(4);admin.IsEnable=reader.GetBoolean(5);admin.IsCanDelete=reader.GetBoolean(6);if(!reader.IsDBNull(7)){admin.LastLogin=reader.GetDateTime(7);}}reader.Close();returnadmin;}}在SQLDAL類庫中編寫編寫IOldMan接口的實現(xiàn)類,代碼如下:publicclassOldMan:IOldMan{Villagevill=newVillage();publicList<Dat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論