三層登入窗體

2021-07-09 23:09:28 字數 4285 閱讀 9897

經過幾天的努力奮鬥,三層登入窗體終於完成了,雖然歷經風雨,但是經過小夥伴們的幫助,順利的學習到了很多的東西。。

u層 

namespace loginui

private void btnlogin_click(object sender, eventargs e)}}

b層

namespace login.bll

else}}

}

d層

//新增乙個dbutil 類 用於鏈結資料庫

namespace login.dal

}

//定義乙個userado類

namespace login.dal

user.id = reader.getint32(0);

user.username = reader.getstring(1);

user.password = reader.getstring(2);

if (!reader .isdbnull (3))

}return user;}}

}}

//定義乙個scoredao類

namespace login.dal}}

}

實體層 model

namespace login.model

public string username

public string password

public string email }}

u層

public class formdl

private sub btnok_click(sender as system.object, e as system.eventargs) handles btnok.click

'例項化傳實體的物件userinfo

dim loginuser as new loginentity.userinfo

'例項化bll層的物件bcheck

dim bcheck as new loginbll.loginmanager

'將文字框中的字串賦給實體物件,使實體物件能夠帶上引數

loginuser.id = txtusername.text()

loginuser.pwd = txtpassword.text()

if bcheck.selectuserentity(loginuser) then

msgbox("登入成功!")

else

msgbox("登陸不成功!")

end if

end sub

private sub btncancel_click(sender as system.object, e as system.eventargs) handles btncancel.click

endend sub

end class

b層

imports loginentity

imports logindal.userdao

public class loginmanager

dim daluser as new logindal.userdao()

dim entityuser as new loginentity.userinfo()

'定義乙個函式方法 selectuserentity 傳遞的引數為 實體層型別的變數 user 返回值為 乙個實體

function selectuserentity(byval user as loginentity.userinfo) as boolean

entityuser.id = user.id

entityuser = daluser.selectuser(entityuser)

if entityuser.pwd = user.pwd then

return true

else

return false

end if

end function

end class

d層

imports system.data.sqlclient

imports loginentity

public class userdao

'資料庫連線,將資料庫連線定義為建構函式,當例項化 logindal 的時候,自動完成資料庫連線

dim sqlconnectstr as string = "server=192.168.24.193;database=login;user id=sa;pwd=1"

dim sqlconnection1 as sqlconnection = new sqlconnection(sqlconnectstr)

'在資料庫中查詢資料,執行命令語句

function selectuser(byval user as loginentity.userinfo) as loginentity.userinfo

'連線資料庫

dim sql as string = "select * from users where id= '" & user.id & "'"

dim cmd as sqlcommand = new sqlcommand(sql, sqlconnection1)

'定義乙個 sqldatareader 型別的變數 reader

dim read as sqldatareader

dim userdatetable as new datatable

'例項化乙個實體層的物件 userinfo

dim user1 as new loginentity.userinfo

sqlconnection1.open()

'由於cmd 物件的屬性 ececutereader 返回之是乙個datareader,所以只能定義乙個datareader型別的變數來接收資料。

read = cmd.executereader

userdatetable.load(read)

user1.id = userdatetable.rows(0)("username")

user1.pwd = userdatetable.rows(0)("password")

return user1

'catch ex as exception

' user1.pwd = ""

' return user1

'finally

if not isnothing(sqlconnection1) then

sqlconnection1.close()

end if

'end try

end function

end class

實體層:

public class userinfo

'定義兩個私有屬性

private userid as string

private password as string

'定義可讀屬性,允許他們的類訪問該屬性

public property id as string

getreturn userid

end get

set(value as string)

userid = value

end set

end property

public property pwd as string

getreturn password

end get

set(value as string)

password = value

end set

end property

end class

好了,這就是我這幾天辛苦努力的結果,感覺還不錯哦

三層登入實現

上篇部落格說到三層的四個問題 what why when how how部分沒有說,這篇部落格以登入為例,用c 實現三層登入,了解它的執行過程以及 詳解。下面這張圖是通過vs生成的時序圖,詳細地講述了登入的整個過程。上面這張圖有些繁瑣,其實簡單地說,就是ui層採集使用者的使用者名稱和密碼,然後傳遞給...

三層登入實現

一實體類model 與資料庫中的表對應 public class user private name as string private password as string private userid as string private level as string private accou...

三層架構在登入窗體中再實現(二)

一 儘管明白各層之間的呼叫關係,但是並不了解是具體如何呼叫,或者說是在呼叫什麼 二 對於vb.net中的一些基礎知識還是有很多的欠缺的 三 陌生的開發環境讓加上三層之間的切換讓自己有點暈頭轉向 這就是自己在初期的真實感受,不過,經過自己的摸索 大家的幫助和查詢資料,自己終於有了一點點撥開雲霧見天日的...