明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

使用PB完成動(dòng)態(tài)系統(tǒng)用戶登錄

[摘要]張濤    在多用戶的大型數(shù)據(jù)庫(kù)系統(tǒng),用戶對(duì)數(shù)據(jù)庫(kù)操作權(quán)限會(huì)有區(qū)別,因此,我們需要設(shè)計(jì)系統(tǒng)用戶登錄窗口,來(lái)完成用戶的確認(rèn)與權(quán)限控制。通常我們都是在數(shù)據(jù)庫(kù)中添加一張人員表,保存人員信息、登錄用戶名以及口令,但這種方法安全性并不是很高。其它,我們可以使用該方法登錄窗口時(shí),需要采用動(dòng)態(tài)生成數(shù)據(jù)庫(kù)連接代碼...
張濤 

  在多用戶的大型數(shù)據(jù)庫(kù)系統(tǒng),用戶對(duì)數(shù)據(jù)庫(kù)操作權(quán)限會(huì)有區(qū)別,因此,我們需要設(shè)計(jì)系統(tǒng)用戶登錄窗口,來(lái)完成用戶的確認(rèn)與權(quán)限控制。通常我們都是在數(shù)據(jù)庫(kù)中添加一張人員表,保存人員信息、登錄用戶名以及口令,但這種方法安全性并不是很高。其它,我們可以使用該方法登錄窗口時(shí),需要采用動(dòng)態(tài)生成數(shù)據(jù)庫(kù)連接代碼,然后連接數(shù)據(jù)庫(kù),如果用戶存在,并且錄入的口令正確,則數(shù)據(jù)庫(kù)連接成功,這樣便可以打開(kāi)系統(tǒng)主窗口了,登錄窗口設(shè)計(jì)如圖1 。  

  設(shè)計(jì)“確定”按鈕Clicked事件的代碼如下:

  w_login.visible = false

  //暫時(shí)隱藏登錄窗口

  Open(w_welcome)

  //打開(kāi)歡迎或者數(shù)據(jù)庫(kù)連接等待窗口

  SetPointer(HOURGLASS!)

  //將光標(biāo)變成沙漏型

  string ls_user,ls_pass

  //讀取用戶錄入的用戶名與口令

  ls_user = sle_username.text

  ls_pass = sle_password.text

  //從注冊(cè)表中讀取所有數(shù)據(jù)庫(kù)信息并存儲(chǔ)在“sqlca”中,其中g(shù)s_key是你的軟件注冊(cè)位置

  RegistryGet(gs_hkey, "DBMS", RegString!, sqlca.DBMS)

  RegistryGet(gs_hkey, "Database", RegString!, sqlca.Database)

  //生成數(shù)據(jù)庫(kù)連接參數(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ù)庫(kù)

  if sqlca.sqlcode<>0 then

  //數(shù)據(jù)庫(kù)連接失敗,說(shuō)明用戶錄入口令不正確,或者不存在該用戶

  close(w_welcome)

  //關(guān)閉等待窗口

  messagebox("登錄","數(shù)據(jù)庫(kù)連接失。")

  sle_password.text=""

  sle_password.setfocus()

  success=false

  w_login.visible=true

  else

  //數(shù)據(jù)庫(kù)連接成功!用戶驗(yàn)證正確

  success=true

  open(w_main)//進(jìn)入主窗口

  close(w_parent)

  end if

  使用本方法時(shí),對(duì)系統(tǒng)的維護(hù)(添加、刪除、權(quán)限設(shè)置等),必須到Sybase Central中進(jìn)行,對(duì)系統(tǒng)維護(hù)人員有一定要求。