窗口的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
似乎逻辑有点错误。定义了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 正确,登录。其他则用户名或密码有误!
为什么定义了as_name,as_password后就进行空判断。让后就SQL语句查询。在来取sle_name和sle_password的值!貌似逻辑顺序有误!
你在SQL语句查询的时候可定义一个行数 ll_count 如果符合ll_count = 1则用户名和密码都正确。其他则有误!