procedure Tcheckuserform.BitBtn1Click(Sender: TObject);
begin
if logintimes>0 then
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from operator2 where name=:name');
ADOQuery1.Parameters.Items[0].Value:=Edit1.Text;
ADOQuery1.Open;
if (ADOQuery1.RecordCount=1) and (ADOQuery1.FieldByName('loginpass').AsString=Edit2.Text) then
begin
logintimes:=0;
self.Hide;
MainForm:=TMainForm.Create(Application);
MainForm.ShowModal;
end
else
begin
if logintimes=1 then
begin
MessageDlg('三次用户名或密码输入错误,程序将关闭,请重新启动程序',mtinformation,[mbok],0);
ADOQuery1.Close;
self.Close;
end;
MessageDlg('用户名或密码错误,请检查!',mtinformation,[mbok],0);
Edit1.SetFocus;
end;
logintimes:=logintimes-1;
end;
end;
连接的MS SQL2000。测试连接正常,但是输入正确的用户和密码就提示用户或者密码错误。我的表很简单:
operator2 列名:name 数据类型:varchar 长度:50
列名:loginpass 数据类型:varchar 长度:50
logintime是用来判断用户在3次密码或者用户名有错后系统将关闭的,初始值是3,用户或者密码错一次logintime就减1
begin
if logintimes>0 then
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from operator2 where name=:name');
ADOQuery1.Parameters.Items[0].Value:=Edit1.Text;
ADOQuery1.Open;
if (ADOQuery1.RecordCount=1) and (ADOQuery1.FieldByName('loginpass').AsString=Edit2.Text) then
begin
logintimes:=0;
self.Hide;
MainForm:=TMainForm.Create(Application);
MainForm.ShowModal;
end
else
begin
if logintimes=1 then
begin
MessageDlg('三次用户名或密码输入错误,程序将关闭,请重新启动程序',mtinformation,[mbok],0);
ADOQuery1.Close;
self.Close;
end;
MessageDlg('用户名或密码错误,请检查!',mtinformation,[mbok],0);
Edit1.SetFocus;
end;
logintimes:=logintimes-1;
end;
end;
连接的MS SQL2000。测试连接正常,但是输入正确的用户和密码就提示用户或者密码错误。我的表很简单:
operator2 列名:name 数据类型:varchar 长度:50
列名:loginpass 数据类型:varchar 长度:50
logintime是用来判断用户在3次密码或者用户名有错后系统将关闭的,初始值是3,用户或者密码错一次logintime就减1
解决方案 »
- 哪位大侠能给我一份根据机器码算注册码的源码?
- 多表查询错误,在线等
- 关于CX日期控件的疑问!(高手请进)
- 求助:为何用moveby作数据插入的时候,指针不能自动向下跳?
- 小问题:在什么情况下,delphi生成的exe文件与dcu文件会出现时间上的不同步?
- 请诸位大虾测试小弟的程序,进者有分!!!!
- 那里有图片菜单控件下呀??图片菜单如何实现??
- ActiveX问题
- 如何在数据库中随机取1000条记录!!60分相送
- 在COMBOBOX中直接输入中文,出现的是其他中文,并且是SELECTALL状态,如果先空一格再输入就没有这种问题,输入数字和英文都没有这种问题
- D6环境+QuickReport4.04版本,无法选择页打印,要打就全部打印。昏。。。。谁有办法解决,高分全给
- 100分相送 一个数据库连接的基本问题,在线等.........
再提示“用户名或密码错误,请检查”前加一句
ShowMessage(Edit2.Text+'<>'+ADOQuery1.FieldByName('loginpass').AsString);看看Show出来的有没有什么不对
adoquery1.sql.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from user where name=:uname and ps=:pword');
adoquery1.parameters.parambyname('uname').value:=edit1.text;
adoquery1.parameters.parambyname('pword').value:=edit2.text;
adoquery1.open;if adoquery1.isempty then
begin
applicatin.messagebox('用户或密码错误','提示信息',MB_OK+MB_ICONSTOP);
edit1.clear;
edit2.clear;
edit1.setfocus;
end
else
showmessage('success');
end;
1、logintimes没有初始化
2、ADOQuery1.RecordCount=1模式判断有很大问题,如果用户名没有会出现很多莫名其妙的错误,因为你是通过参数查询的
3、没有退出机制,仅仅是窗口隐藏
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, Buttons, SkinCaption, WinSkinData;type
Tcheckuserform = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
SkinData1: TSkinData;
SkinCaption1: TSkinCaption;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
checkuserform: Tcheckuserform;
logintimes:Integer;implementationuses Main;{$R *.dfm}procedure Tcheckuserform.BitBtn1Click(Sender: TObject);
begin
if logintimes>0 then
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from operator2 where name=:name');
ADOQuery1.Parameters.Items[0].Value:=Edit1.Text;
ADOQuery1.Open;
if (ADOQuery1.RecordCount=1) and (ADOQuery1.FieldByName('loginpass').AsString=Edit2.Text) then
begin
logintimes:=0;
self.Hide;
MainForm:=TMainForm.Create(Application);
MainForm.ShowModal;
end
else
begin
if logintimes=1 then
begin
MessageDlg('Èý´ÎÓû§Ãû»òÃÜÂëÊäÈë´íÎ󣬳ÌÐò½«¹Ø±Õ£¬ÇëÖØÐÂÆô¶¯³ÌÐò',mtinformation,[mbok],0);
ADOQuery1.Close;
self.Close;
end;
ShowMessage(Edit2.Text+'<>'+ADOQuery1.FieldByName('loginpass').AsString);
MessageDlg('Óû§Ãû»òÃÜÂë´íÎó£¬Çë¼ì²é£¡',mtinformation,[mbok],0);
Edit1.SetFocus;
end;
logintimes:=logintimes-1;
end;
end;procedure Tcheckuserform.BitBtn2Click(Sender: TObject);
begin
self.Close;
end;procedure Tcheckuserform.Edit1Change(Sender: TObject);
begin
if Edit1.Text<>'' then
begin
BitBtn1.Enabled:=True;
end
else
begin
BitBtn1.Enabled:=False;
end;
end;procedure Tcheckuserform.FormShow(Sender: TObject);
begin
Edit1.SetFocus;
ADOConnection1.Connected:=False;
ADOConnection1.LoginPrompt:=False;
ADOConnection1.Connected:=True;
BitBtn1.Enabled:=False;
logintimes:=3;
end;end.
怎么解决呢?具体点,我菜鸟,刚学不久