使用PB完成動態(tài)系統(tǒng)用戶登錄
發(fā)表時間:2024-02-24 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]張濤 在多用戶的大型數(shù)據(jù)庫系統(tǒng),用戶對數(shù)據(jù)庫操作權(quán)限會有區(qū)別,因此,我們需要設(shè)計系統(tǒng)用戶登錄窗口,來完成用戶的確認與權(quán)限控制。通常我們都是在數(shù)據(jù)庫中添加一張人員表,保存人員信息、登錄用戶名以及口令,但這種方法安全性并不是很高。其它,我們可以使用該方法登錄窗口時,需要采用動態(tài)生成數(shù)據(jù)庫連接代碼...
張濤
在多用戶的大型數(shù)據(jù)庫系統(tǒng),用戶對數(shù)據(jù)庫操作權(quán)限會有區(qū)別,因此,我們需要設(shè)計系統(tǒng)用戶登錄窗口,來完成用戶的確認與權(quán)限控制。通常我們都是在數(shù)據(jù)庫中添加一張人員表,保存人員信息、登錄用戶名以及口令,但這種方法安全性并不是很高。其它,我們可以使用該方法登錄窗口時,需要采用動態(tài)生成數(shù)據(jù)庫連接代碼,然后連接數(shù)據(jù)庫,如果用戶存在,并且錄入的口令正確,則數(shù)據(jù)庫連接成功,這樣便可以打開系統(tǒng)主窗口了,登錄窗口設(shè)計如圖1 。
設(shè)計“確定”按鈕Clicked事件的代碼如下:
w_login.visible = false
//暫時隱藏登錄窗口
Open(w_welcome)
//打開歡迎或者數(shù)據(jù)庫連接等待窗口
SetPointer(HOURGLASS!)
//將光標(biāo)變成沙漏型
string ls_user,ls_pass
//讀取用戶錄入的用戶名與口令
ls_user = sle_username.text
ls_pass = sle_password.text
//從注冊表中讀取所有數(shù)據(jù)庫信息并存儲在“sqlca”中,其中g(shù)s_key是你的軟件注冊位置
RegistryGet(gs_hkey, "DBMS", RegString!, sqlca.DBMS)
RegistryGet(gs_hkey, "Database", RegString!, sqlca.Database)
//生成數(shù)據(jù)庫連接參數(shù),除了用戶名與口令外,其他由系統(tǒng)的需要而定。
SQLCA.DBParm += ";UID="+ls_user+";PWD="+ls_pass+&&"',PBUseProcOwner='Yes',
ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'"
CONNECT using sqlca;
//連接數(shù)據(jù)庫
if sqlca.sqlcode<>0 then
//數(shù)據(jù)庫連接失敗,說明用戶錄入口令不正確,或者不存在該用戶
close(w_welcome)
//關(guān)閉等待窗口
messagebox("登錄","數(shù)據(jù)庫連接失!")
sle_password.text=""
sle_password.setfocus()
success=false
w_login.visible=true
else
//數(shù)據(jù)庫連接成功!用戶驗證正確
success=true
open(w_main)//進入主窗口
close(w_parent)
end if
使用本方法時,對系統(tǒng)的維護(添加、刪除、權(quán)限設(shè)置等),必須到Sybase Central中進行,對系統(tǒng)維護人員有一定要求。