|            
张涛  
    在多用户的大型数据库系统,用户对数据库操作权限会有区别,因此,我们需要设计系统用户登录窗口,来完成用户的确认与权限控制。通常我们都是在数据库中添加一张人员表,保存人员信息、登录用户名以及口令,但这种方法安全性并不是很高。其它,我们可以使用该方法登录窗口时,需要采用动态生成数据库连接代码,然后连接数据库,如果用户存在,并且录入的口令正确,则数据库连接成功,这样便可以打开系统主窗口了,登录窗口设计如图1 。  
    设计“确定”按钮Clicked事件的代码如下: 
    w_login.visible = false 
    //暂时隐藏登录窗口 
    Open(w_welcome) 
    //打开欢迎或者数据库连接等待窗口 
    SetPointer(HOURGLASS!) 
    //将光标变成沙漏型 
    string ls_user,ls_pass 
    //读取用户录入的用户名与口令 
    ls_user = sle_username.text 
    ls_pass = sle_password.text 
    //从注册表中读取所有数据库信息并存储在“sqlca”中,其中gs_key是你的软件注册位置 
    RegistryGet(gs_hkey, "DBMS", RegString!, sqlca.DBMS) 
    RegistryGet(gs_hkey, "Database", RegString!, sqlca.Database) 
    //生成数据库连接参数,除了用户名与口令外,其他由系统的需要而定。 
    SQLCA.DBParm += ";UID="+ls_user+";PWD="+ls_pass+&&"',PBUseProcOwner='Yes', 
    ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'" 
    CONNECT using sqlca; 
    //连接数据库 
    if sqlca.sqlcode<>0 then 
    //数据库连接失败,说明用户录入口令不正确,或者不存在该用户 
    close(w_welcome) 
    //关闭等待窗口 
    messagebox("登录","数据库连接失败!") 
    sle_password.text="" 
    sle_password.setfocus() 
    success=false 
    w_login.visible=true 
    else 
    //数据库连接成功!用户验证正确 
    success=true 
    open(w_main)//进入主窗口 
    close(w_parent) 
    end if 
    使用本方法时,对系统的维护(添加、删除、权限设置等),必须到Sybase Central中进行,对系统维护人员有一定要求。  
 |