在前段時間中學習到了三層的技術,當時對著那個**做例子,一步一步來,到最後的成功,感覺對三層有了乙個很好的理解了。所以就非常趕緊的拿過來了機房系統的登陸來了,結果非常費勁。用自己對三層的理解敲登陸阻力非常的大,不是這裡出問題就是那裡出問題,而且感覺到了對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 ...