用三層實現登陸的例項

2021-12-29 22:37:49 字數 3914 閱讀 6693

在前段時間中學習到了三層的技術,當時對著那個**做例子,一步一步來,到最後的成功,感覺對三層有了乙個很好的理解了。所以就非常趕緊的拿過來了機房系統的登陸來了,結果非常費勁。用自己對三層的理解敲登陸阻力非常的大,不是這裡出問題就是那裡出問題,而且感覺到了對vb.net的生疏感覺。所以只能從頭開始繼續深入的理解三層了,結果對著**和那些資料,費了好長時間,終於在千呼萬喚中實現了vb.net版的登陸的三層,同時也感覺到了以前對三層的理解的確實膚淺了,特別是對b層和實體層的作用有了很大的認識。接下來展示自己的**,並總結提高。

d層:imports system.data

imports system.data.sqlclient

imports jifang.entity

public class userdao

'鏈結資料庫

dim conn as sqlconnection = new sqlconnection("server=192.168.24.33;database=jifang;uid=sa;pwd=123456;")

dim reader as sqldatareader

public function selectuser(u as user)

'繫結鏈結的字串命令

dim cmd as sqlcommand = conn.createcommand

cmd.commandtext = "select * from userinfo where worknum='" & u.worknum & "' and password ='" & u.password & "' and userlevel='" & u.userlevel & "'"

cmd.commandtype = commandtype.text

'開啟資料庫,並定義資料讀取方法

conn.open()

'dim reader as sqldatareader

reader = cmd.executereader

'讀取資料

while (reader.read)

u.name = reader.getstring(1)

u.registerdatetime = reader.getdatetime(4)

if isdbnull(reader(5)) then

else

u.remark = reader.getstring(5)

end if

conn.close()

return true

end while

conn.close()

return nothing

end function

public function insertuser(u as user)

'try

conn.open()

dim cmd1 as sqlcommand = conn.createcommand

cmd1.commandtext = "select getdate()"

cmd1.commandtype = commandtype.text

reader = cmd1.executereader

dim cmd as sqlcommand = conn.createcommand

cmd.commandtext = "insert int workuser(userlevel,name,worknum,ondate,offdate,remark) values(@userlevel,@name,@worknum,@ondate,@offdate,@remark)"

cmd.commandtype = commandtype.text

cmd.parameters.add(new sqlparameter("@userlevel", u.userlevel))

cmd.parameters.add(new sqlparameter("@name", u.name))

cmd.parameters.add(new sqlparameter("@worknum", u.worknum))

cmd.parameters.add(new sqlparameter("@ondate", reader))

cmd.parameters.add(new sqlparameter("@offdate", 0 - 0 - 0))

cmd.parameters.add(new sqlparameter("@remark", u.remark))

cmd.executenonquery()

conn.close()

return true

'catch ex as exception

'throw new exception("插入錯誤!")

'return false

'end try

end function

end classb層:

imports jifang.entity

imports jifang.dal

public class loginmannage

public function userlogin(u as user) ' as user

dim udao as new jifang.dal.userdao

if udao.selectuser(u) then '如果查詢成功

if udao.insertuser(u) then

return true

else

return false

end if

else

msgbox("denglu shibai")

return false

end if

end function

end classu層:

imports jifang.bll

imports jifang.entity

imports system.data

public class frmlogin

private sub button1_click(sender as object, e as eventargs) handles button1.click

dim m as new jifang.bll.loginmannage

dim u as new user

u.worknum = txtusername.text.trim

u.password = txtpassword.text

u.userlevel = cmbuserlevel.text.trim

if m.userlogin(u) then

dim main as new frmmain

main.show()

me.close()

else

throw new exception("錯了。")

end if

end sub

private sub frmlogin_load(sender as object, e as eventargs) handles mybase.load

end sub

end class通過前面的學習和後來的實踐,對b層的業務邏輯層的作用有了乙個實質的認識,這個層的作用就是業務邏輯判斷來的,以登陸為例,在這個例子中,從u層和d層傳過來的資料跟b層沒有關係,b層只是用來判斷的,屬於業務邏輯範疇,跟其他一切的用處無關。而實體層,就是在這三層中間來回傳遞資訊的,把引數來來回回的傳遞用的。這種作用和**中的說法一樣,但是經過了登陸的實踐來說就不光是一句空話了,而是對三層中的資料處理也有了認識。

這個登陸的例子不是白做的,實踐也加深了對知識的理解,不光光停留在那些口頭或紙面上的作用,更重要的是做出來,把效果展示出來。從而能夠一點破面,對整個軟體架構的分層做法更深理解。

三層登陸例項

在理論篇我們已經知道了,實體類作為三層之間的傳遞和處理物件 封裝引數 在系統中三層建立對實體類的引用,上層建立對下層的引用 ui bll dal。1 系統說明 功能 以機房收費系統的資料庫 user info 表為基礎實現基本的系統登陸,如果登陸成功則彈出提示框顯示登入成功,否則則顯示 使用者名稱和...

C 三層架構登陸例項

很早之前,就聽說過三層結構了。當時只知道 三層結構 是把 系統的 介面 跟 資料庫操作等不相關的程式分別開來。原來這麼簡單的實現,確實傳說中的 三層結構啊。首先,先來看一下是哪三層。表示層 ui,user inte ce 業務邏輯層 bll businesslogiclayer 資料訪問層 dal ...

C 三層架構登陸例項

很早之前,就聽說過三層結構了。當時只知道 三層結構 是把 系統的 介面 跟 資料庫操作等不相關的程式分別開來。原來這麼簡單的實現,確實傳說中的 三層結構啊。首先,先來看一下是哪三層。表示層 ui,user inte ce 業務邏輯層 bll businesslogiclayer 資料訪問層 dal ...