用pb写的登录窗口,进入登录界面提示“数据库连接成功”,登录时提示“用户名密码错误”

窗口的open()事件代码为:
li_n=3
SQLCA.DBMS = "SNC SQL Native Client"
SQLCA.Database = "db_test"
SQLCA.LogPass = ''
SQLCA.ServerName = "china"
SQLCA.LogId = ""
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect using sqlca;
IF SQLCA.SQLCode <> 0 THEN
MessageBox('成功','数据库连接成功!')
ELSE
MessageBox('失败','数据库连接失败!')
END IF
open(w_login)
登录按钮的clicked()事件代码为:
string as_name,as_password
if as_name="" or as_password="" then
messagebox("提示","用户名和密码不能为空")
else
SELECT name,password
INTO :as_name,:as_password
FROM aa
WHERE name = :as_name AND password = :as_password ;
as_name=trim(sle_name.text)
as_password=trim(sle_password.text)
messagebox("",sqlca.sqlerrtext)
if SQLCA.sqlcode=0 then
open(w_main)
close(w_login)
else
li_n=li_n - 1
if li_n<>0 then
messagebox("提示","用户名密码错误")
else
messagebox("提示","错误超过3次,自动退出")
halt
end if
end if
end if

可在li_n = li_n -1 后,用messagebox('',li_n) 查看下li_n 的值!
似乎逻辑有点错误。定义了as_name,as_password后就直接空判断。在来SQL查询。后取值!
整理一下。
你可在定义一个行数 ll_count
select count(*) into :ll_count from aa where name = :as_name AND password = :as_password;
if ll_count = 1 then 正确,登录。其他则用户名或密码有误!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-29
你可以在li_n = li_n -1 后,用messagebox('',li_n) 看下li_n的值。
为什么定义了as_name,as_password后就进行空判断。让后就SQL语句查询。在来取sle_name和sle_password的值!貌似逻辑顺序有误!
你在SQL语句查询的时候可定义一个行数 ll_count 如果符合ll_count = 1则用户名和密码都正确。其他则有误!

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网