生活随笔
收集整理的這篇文章主要介紹了
数据增删改查之三层架构(理解三层续)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先是畫的圖,感覺把圖畫完了,工程就完成了一大半,前提是畫的思路是對的。還是在理解三層。
下面是畫的關于數據的增刪改查這個小例子的包圖、類圖和時序圖。
?
包圖。
?
類圖。
時序圖。
用戶注冊。
用戶刪除。
用戶查詢,一個是查選全部用戶,一個是查詢一個用戶對象。
用戶修改。也就是查詢、刪除和增加。
用戶注冊的代碼,如下所示:
實體層代碼。
Public?Class?UserInfo?? ????Private?userID?As?Integer?? ????Private?userName?As?String?? ????Private?userActor?As?String?? ????Private?userPwd?As?String?? ????Private?userRegDate?As?DateTime?? ????Private?userFlag?As?Boolean?? ?????? ????Public?Property?UserID()?As?Integer?? ????????Get?? ????????????Return?userID?? ????????End?Get?? ????????Set(ByVal?value?As?Integer)?? ????????????userID?=?value?? ????????End?Set?? ????End?Property?? ?????? ????Public?Property?UserName()?As?String?? ????????Get?? ????????????Return?userName?? ????????End?Get?? ????????Set(ByVal?value?As?String)?? ????????????userName?=?value?? ????????End?Set?? ????End?Property?? ?????? ????Public?Property?UserActor()?As?String?? ????????Get?? ????????????Return?userActor?? ?? ????????End?Get?? ????????Set(ByVal?value?As?String)?? ????????????userActor?=?value?? ????????End?Set?? ????End?Property?? ?????? ????Public?Property?UserPwd()?As?String?? ????????Get?? ????????????Return?userPwd?? ????????End?Get?? ????????Set(ByVal?value?As?String)?? ????????????userPwd?=?value?? ????????End?Set?? ????End?Property?? ?????? ????Public?Property?UserRegDate()?As?DateTime?? ????????Get?? ????????????Return?userRegDate?? ?? ????????End?Get?? ????????Set(ByVal?value?As?DateTime)?? ????????????userRegDate?=?value?? ????????End?Set?? ????End?Property?? ?????? ????Public?Property?UserFlag?? ????????Get?? ????????????Return?userFlag?? ?? ????????End?Get?? ????????Set(ByVal?value)?? ????????????userFlag?=?value?? ????????End?Set?? ????End?Property?? ?? End?Class??
DAL層代碼。
Imports?System.Data.SqlClient?? ?? ?? ?? ?? Public?Class?DALUser?? ?????? ????Dim?connStr?As?String?=?"Data?Source=192.168.24.63;Initial?Catalog=PCharge_Sys;User?ID=sa;Password=sa"?? ?????? ?????? ?????? ?????? ?????? ?????? ????Public?Function?DALUserAdd(ByVal?EntityUserInfo?As?Entity.UserInfo)?As?Boolean?? ????????Dim?sql?As?String?=?"Insert?into?UserInfo(UserID,UserName,UserActor,UserPwd,UserRegDate,UserFlag)"?_?? ???????????????????????????&?"?values?(@UserID,@UserName,@UserActor,@UserPwd,@UserRegDate,@UserFlag)?"?? ?? ????????Dim?conn?As?SqlConnection?=?New?SqlConnection(connStr)?? ?? ?? ????????Dim?cmd?As?SqlCommand?=?New?SqlCommand(sql,?conn)?? ????????Dim?sqlParam?As?New?SqlParameter?? ?? ????????sqlParam?=?New?SqlParameter("@UserID",?SqlDbType.Int)?? ????????sqlParam.Value?=?EntityUserInfo.UserID?? ????????cmd.Parameters.Add(sqlParam)?? ?? ????????sqlParam?=?New?SqlParameter("@UserName",?SqlDbType.VarChar)?? ????????sqlParam.Value?=?EntityUserInfo.UserName?? ????????cmd.Parameters.Add(sqlParam)?? ?? ????????sqlParam?=?New?SqlParameter("@UserActor",?SqlDbType.VarChar)?? ????????sqlParam.Value?=?EntityUserInfo.UserActor?? ????????cmd.Parameters.Add(sqlParam)?? ?? ????????sqlParam?=?New?SqlParameter("@UserPwd",?SqlDbType.VarChar)?? ????????sqlParam.Value?=?EntityUserInfo.UserPwd?? ????????cmd.Parameters.Add(sqlParam)?? ?? ????????sqlParam?=?New?SqlParameter("@UserRegDate",?SqlDbType.DateTime)?? ????????sqlParam.Value?=?EntityUserInfo.UserRegDate?? ????????cmd.Parameters.Add(sqlParam)?? ?? ????????sqlParam?=?New?SqlParameter("@UserFlag",?SqlDbType.Bit)?? ????????sqlParam.Value?=?EntityUserInfo.UserFlag?? ????????cmd.Parameters.Add(sqlParam)?? ?? ????????Try?? ????????????conn.Open()?? ????????????Return?cmd.ExecuteNonQuery()?>?0?? ?? ????????Catch?ex?As?Exception?? ????????????Return?False?? ????????End?Try?? ????????If?Not?IsNothing(conn)?Then?? ????????????conn.Close()?? ????????????conn?=?Nothing?? ????????End?If?? ?? ?? ????End?Function?? ?? End?Class??
BLL層代碼。
Imports?DAL?? ?? ?? ?? ?? ?? Public?Class?BLLUser?? ?????? ?????? ?????? ?????? ?????? ?????? ????Public?Function?BLLUserAdd(ByVal?EntityUserInfo?As?Entity.UserInfo)?As?Boolean?? ????????Dim?DALUserInfo?As?New?DAL.DALUser?? ?? ????????Return?DALUserInfo.DALUserAdd(EntityUserInfo)?? ????End?Function?? End?Class??
UI層代碼。
界面層。
?? Public?Class?UserAddForm?? ?????? ?????? ?????? ?????? ?????? ?????? ?? ????Private?Sub?RegisterBut_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?RegisterBut.Click?? ?? ????????? ?? ????????If?txtUserID.Text?=?""?Or?txtUserName.Text?=?""?Or?txtUserPwd.Text?=?""?Or?txtUserRegDate.Text?=?""?Or?txtUserActor.Text?=?""?Or?txtUserFlag.Text?=?""?Then?? ????????????MsgBox("輸入不能為空!請重新輸入!")?? ????????Else?? ????????????If?Not?IsNumeric(txtUserID.Text)?Then?? ????????????????MsgBox("輸入的編號因為數字!請重新輸入!")?? ????????????End?If?? ????????????If?Not?IsDate(txtUserRegDate.Text)?Then?? ????????????????MsgBox("輸入的注冊日期請為日期XXXX-XX-XX格式!")?? ????????????Else?? ????????????????Dim?EntityUserInfo?As?New?Entity.UserInfo?? ????????????????EntityUserInfo.UserID?=?txtUserID.Text?? ????????????????EntityUserInfo.UserName?=?txtUserName.Text?? ????????????????EntityUserInfo.UserActor?=?txtUserActor.Text?? ????????????????EntityUserInfo.UserPwd?=?txtUserPwd.Text?? ????????????????EntityUserInfo.UserRegDate?=?txtUserRegDate.Text?? ????????????????EntityUserInfo.UserFlag?=?txtUserFlag.Text?? ?? ????????????????Dim?BLLUserInfo?As?New?BLL.BLLUser?? ????????????????If?BLLUserInfo.BLLUserAdd(EntityUserInfo)?Then?? ????????????????????MsgBox("添加成功!")?? ????????????????Else?? ????????????????????MsgBox("添加失敗!")?? ?? ????????????????End?If?? ????????????End?If?? ?????????????? ?? ????????End?If?? ?? ????End?Sub?? End?Class??
上面是在數據庫表中插入一條記錄,其他的刪除和修改,查詢類似,就是DAL和BLL層返回值可能不同。
DAL層刪除查詢代碼,保存備后用。
???? ?????? ?????? ?????? ?????? ????Public?Function?DALUserSelectAll()?As?DataSet?? ????????Dim?sql?As?String?=?"select?*?from?UserInfo"?? ????????Dim?conn?As?SqlConnection?=?New?SqlConnection(connStr)?? ????????Dim?cmd?As?SqlCommand?=?New?SqlCommand(sql,?conn)?? ????????Dim?dap?As?SqlDataAdapter?=?New?SqlDataAdapter(cmd)?? ????????Dim?ds?As?New?DataSet?? ?? ????????Try?? ????????????conn.Open()?? ????????????dap.Fill(ds)?? ????????????Return?ds?? ?? ????????Catch?ex?As?Exception?? ????????????Return?Nothing?? ????????Finally?? ????????????If?Not?IsNothing(cmd)?Then?? ????????????????cmd.Dispose()?? ????????????????cmd?=?Nothing?? ?? ????????????End?If?? ????????????If?Not?IsNothing(conn)?Then?? ????????????????conn.Close()?? ????????????????conn?=?Nothing?? ?? ????????????End?If?? ????????End?Try?? ????End?Function?? ?????? ?????? ?????? ?????? ?????? ?????? ????Public?Function?DALUserGetObject(ByVal?UserID?As?Integer)?As?Entity.UserInfo?? ????????Dim?sql?As?String?=?"select?UserName,UserActor,UserPwd,UserRegDate,UserFlag?from?UserInfo?where?UserID=@UserID"?? ????????Dim?conn?As?SqlConnection?=?New?SqlConnection(connStr)?? ????????Dim?cmd?As?SqlCommand?=?New?SqlCommand(sql,?conn)?? ????????Dim?sqlParam?As?New?SqlParameter("@UserID",?SqlDbType.Int)?? ????????sqlParam.Value?=?UserID?? ????????Dim?sdr?As?SqlDataReader?=?Nothing?? ?? ????????Dim?DALEntityUserinfo?As?New?Entity.UserInfo?? ?? ????????Try?? ????????????sdr?=?cmd.ExecuteReader()?? ????????????While?sdr.Read?? ????????????????DALEntityUserinfo.UserID?=?UserID?? ????????????????DALEntityUserinfo.UserName?=?sdr.GetString(0)?? ????????????????DALEntityUserinfo.UserActor?=?sdr.GetString(1)?? ????????????????DALEntityUserinfo.UserPwd?=?sdr.GetString(2)?? ????????????????DALEntityUserinfo.UserRegDate?=?sdr.GetString(3)?? ????????????????DALEntityUserinfo.UserFlag?=?sdr.GetString(4)?? ?? ????????????End?While?? ????????????Return?DALEntityUserinfo?? ????????Catch?ex?As?Exception?? ????????????Return?Nothing?? ????????Finally?? ????????????If?Not?IsNothing(sdr)?Then?? ????????????????sdr.Close()?? ????????????????sdr?=?Nothing?? ?? ????????????End?If?? ????????????If?Not?IsNothing(cmd)?Then?? ????????????????cmd.Dispose()?? ????????????????cmd?=?Nothing?? ?? ????????????End?If?? ????????????If?Not?IsNothing(conn)?Then?? ????????????????conn.Close()?? ????????????????conn?=?Nothing?? ????????????End?If?? ????????End?Try?? ????End?Function?? ?? ????Public?Function?DALUserDel(ByVal?DALEntityUserinfo?As?Entity.UserInfo)?As?Boolean?? ????????Dim?sql?As?String?=?"delete?from?UserInfo?where?UserID=@UserID"?? ????????Dim?conn?As?SqlConnection?=?New?SqlConnection(connStr)?? ????????Dim?cmd?As?SqlCommand?=?New?SqlCommand(sql,?conn)?? ????????Dim?sqlParam?As?New?SqlParameter("@UserID",?SqlDbType.Int)?? ????????sqlParam.Value?=?DALEntityUserinfo.UserID?? ????????Try?? ????????????conn.Open()?? ????????????Return?cmd.ExecuteNonQuery()?>?0?? ?? ????????Catch?ex?As?Exception?? ????????????Return?False?? ????????Finally?? ????????????If?Not?IsNothing(cmd)?Then?? ????????????????cmd.Dispose()?? ????????????????cmd?=?Nothing?? ?? ????????????End?If?? ????????????If?Not?IsNothing(conn)?Then?? ????????????????conn.Close()?? ????????????????conn?=?Nothing?? ?? ????????????End?If?? ?? ????????End?Try?? ????End?Function?? ?? End?Class??
?
以上只是為了理解而理解,所以做小例子,可能有很多缺陷,歡迎您指教。
總結
以上是生活随笔為你收集整理的数据增删改查之三层架构(理解三层续)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。