关于登录的问题

mxlmwl 2002-04-26 10:18:47
有一个用户表denglu,其中有两个字段user:char(10),passwd(10),现在我想在w_denglu窗口中sle_1中输入用户名,在sle_2中输入密码,然后查询数据库,如果用户和密码都相等,则进入程序,否则退出,怎么写代码?请写出完整的代码好吗,我是新手,谢谢!!

我用select语句后用sqlca.sqlcode=-1和sqlca.sqlcode=100来判断,结果发现sqlca.sqlcode=-1顺利通过,说明已经顺利连接到数据库了,可是总是sqlca.sqlcode=100,说是找不到用户名,我在表中已经写了啊,这到底是为什么???

...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
njscorpio 2002-04-27
  • 打赏
  • 举报
回复

定义全局变量string str_1,str_2
定义实例变量int ii_number=0
登陆窗口clicked事件
if w_dl.yhm.text=""then
messagebox("口令提示","请输入用户名!",exclamation!)
w_dl.yhm.setfocus()
elseif w_dl.mm.text=" "then
messagebox("口令提示","请输入口令!",exclamation!)
w_dl.mm.setfocus()
else
select id,password into :str_1,:str_2
from dl
where id=:w_dl.yhm.text and &
password = :w_dl.mm.text
using sqlca;
if sqlca.sqlcode<0 or sqlca.sqlcode = 100 then
messagebox("错误!", "请检查用户名和口令!", stopsign!)
ii_number ++
if ii_number = 3 then
halt
else
w_dl.yhm.setfocus()
end if
else
setpointer(hourglass!)
//messagebox("系统登陆成功!","")
open(w_ft)
if str_2="8888" then
messagebox("警告!!","你的密码为系统的初使密码,请在进入系统后更改初使密码!")
end if
if str_1 = "root" then
m_ft.m_d.m_7.enabled = true
else
m_ft.m_d.m_7.enabled = false
end if

close(parent)

end if

end if
更改密码窗口clicked事件
if w_change_password.xkl.text="" then

messagebox("口令提示!","口令不能为空,请输入口令!",exclamation!)

elseif w_change_password.xkl.text<>w_change_password.qr.text then
messagebox("口令提示","两次输入的新密码不符,请检查新密码!",exclamation!)

else
if w_change_password.ykl.text<>str_2 then
messagebox("口令提示!","请检查原口令!",exclamation!)
else
update dl
set password = :xkl.text
where id = :str_1
using sqlca;
if sqlca.sqlcode=0 then
messagebox("口令更改","用户"+str_1+"的口令已经更改,请记住新密码!",exclamation!)
close(parent)
end if

end if
end if
chen917 2002-04-26
  • 打赏
  • 举报
回复
ls_user = sle_username.text
ls_pass = sle_password.text
select count(*) into :li_count from tablename&
where user_id=:ls_user and pope_id=:ls_pass;
if li_count=0 then
messagebox("登录错误","错误的用户名或错误的密码")
return
end if
job_lzg 2002-04-26
  • 打赏
  • 举报
回复
你的select语句写where条件了吗??pb的select语句只支持一条数据的检索。
swjtu95 2002-04-26
  • 打赏
  • 举报
回复
摘录:

==============
具体代码如下:
//“确定”按钮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中维护人员(添加、删除、权限设置等),或者使用存贮过程添加,对系统维护人员有一定要求。

方法二:
在数据库中添加一张人员表,保存人员信息以及登陆用户名以及口令,注意为了安全起见,这种口令不能使用简单的varchar类型的列,而应该使用binary等blob类型,还可以在存入读出数据是进行软件加密解密。系统登陆时可以使用一个最高权限用户连接数据库,然后打开登陆窗口验证用户。例如:
建立人员表(dbo.gzryb):
bh char(10)
xm varchar(12)
dw varchar(40)
dlm varchar(20)
password binary
...
使用前必须连接数据库,并且是最高权限,否则无法对系统中的数据库表进行操作。
“确定按钮”Clicked事件:
string ls_user

//读取用户名
ls_user = sle_user.text

//判断用户名是否为空
if not (isnull(ls_user) or trim(ls_user) = "") then
blob pass
selectblob password into :pass from dbo.gzryb where bh = :ls_user;
//验证口令
if pass = blob(sle_pass.text) then
open(w_main)
else
messagebox("错误","对不起,你录入的口令不正确!",StopSign!)
sle_pass.setfocus()
sle_pass.selecttext(1,len(sle_pass.text))
end if
else
messagebox("错误","对不起,你没有录入用户名!",StopSign!)
dw_user.setfocus()
end if


//修改用户口令时:
blob pass
pass = blob(is_password)
updateblob dbo.gzryb set password = :pass where bh = :ls_user using sqlca;
if sqlca.sqlnrows > 0 then
commit using sqlca;
else
rollback using sqlca;
messagebox("修改口令","修改口令时出错!")
end if

不建议使用这种方法,虽然操作简单,但安全性较差,不好进行数据表的权限维护,因为实际上都是以同一个数据库用户连接数据库的。

1,110

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧