經過幾天的努力奮鬥,三層登入窗體終於完成了,雖然歷經風雨,但是經過小夥伴們的幫助,順利的學習到了很多的東西。。
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中的一些基礎知識還是有很多的欠缺的 三 陌生的開發環境讓加上三層之間的切換讓自己有點暈頭轉向 這就是自己在初期的真實感受,不過,經過自己的摸索 大家的幫助和查詢資料,自己終於有了一點點撥開雲霧見天日的...