procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from users');
adoquery1.sql.add('where names='+quotedstr(edit1.text));
adoquery1.open;
if adoquery1.fields[0].value=null then
begin
messagedlg('请确认你输入的用户名是否正确',mtwarning,[mbok],0)
end
else if
adoquery1.fields[2].value=quotedstr(edit2.text) then
begin
form1.Hide;
form2.show;
end
else
begin
messagedlg('密码错误',mtwarning,[mbok],0);
exit;
end;
end;
SQL SERVER数据库
表名:suers
userid names passwd
001 xl 0002
002 ll 1234现在问题是不论你输入正确的密码还是错误的密码都是提示密码错误,请那位高手麻烦解答一下
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from users');
adoquery1.sql.add('where names='+quotedstr(edit1.text));
adoquery1.open;
if adoquery1.fields[0].value=null then
begin
messagedlg('请确认你输入的用户名是否正确',mtwarning,[mbok],0)
end
else if
adoquery1.fields[2].value=quotedstr(edit2.text) then
begin
form1.Hide;
form2.show;
end
else
begin
messagedlg('密码错误',mtwarning,[mbok],0);
exit;
end;
end;
SQL SERVER数据库
表名:suers
userid names passwd
001 xl 0002
002 ll 1234现在问题是不论你输入正确的密码还是错误的密码都是提示密码错误,请那位高手麻烦解答一下
else if adoquery1.fields[2].value = edit2.text then
所以不对。
我把adoquery1.fields[2].value=quotedstr(edit2.text)改为
trim(adoquery1.fields[2].value)=trim(edit2.text)才对了
但是我不知道为什么SQL SERVER数据库当设置了比如20个字符后我没有输入到20个字符,他会自动用空格给我补上.这是为什么?
这句还有问题!
如果你的userid字段有字符的话,在查询时SQL SERVER回返回错误!
var
aConn:TADOConnection;
aQry:TADOQuery;
sSql:string;
begin
if eName.Text = '' then
begin
ShowMessage('用户名未填写……');
exit;
end;
aConn:= TADOConnection.Create(fLogin);
aQry:= TADOQuery.Create(fLogin);
try
aConn.ConnectionString := '';
aQry.SQL.Clear;
aConn.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;' +
'User ID=sa;Initial Catalog=registerdata;Data Source=Server';
aConn.LoginPrompt := False;
aConn.Connected := True;
aQry.Connection := aConn;
sSql:= 'select u.*,d.*,t.user_type_prority' +
' from userinfo u,Dict_Unit d,User_type t' +
' where u.AssociateFieldName = d.F_id and u.user_name = '''+ eName.Text +'''' +
' and u.user_type_id = t.id'; aQry.SQL.Text := sSql;
aQry.Open;
if not ( aQry.Eof and aQry.Bof )then
begin
//if (aQry.FieldByName('user_password').AsString=ePwd.Text) and (aQry.FieldByName('AssociateFieldName').AsInteger = 7 )then
if (aQry.FieldByName('user_password').AsString=ePwd.Text) then
begin
if aQry.FieldByName('user_type_prority').AsInteger = 9996 then
begin
fLogin.Hide;
Application.createForm(TfClient,fClient);
fClient.iUserID := aQry.FieldByName('user_id').AsInteger;
fClient.sUserName := aQry.FieldByName('user_name').AsString;
fClient.iUnitId := aQry.FieldByName('AssociateFieldName').AsInteger;
fClient.sUnitName := aQry.FieldByName('F_UnitName').AsString;
fClient.iPlaceId := aQry.FieldByName('F_BelongPlace').AsInteger;
fClient.showmodal;
fClient.free;
fLogin.Show;
end;
if aQry.FieldByName('user_type_prority').AsInteger = 9997 then
begin
fLogin.Hide;
Application.createForm(TfManagment,fManagment);
fManagment.eOperator.Tag := aQry.FieldByName('user_id').AsInteger;
fManagment.eOperator.Text := aQry.FieldByName('user_name').AsString;
fManagment.iUnitId := aQry.FieldByName('AssociateFieldName').AsInteger;
fManagment.eUnitName.Tag :=aQry.FieldByName('AssociateFieldName').AsInteger;
fManagment.sUnitName := aQry.FieldByName('F_UnitName').AsString;
fManagment.eUnitName.Text := aQry.FieldByName('F_UnitName').AsString;
fManagment.iPlaceId := aQry.FieldByName('F_BelongPlace').AsInteger;
fManagment.iGroupId := aQry.fieldByName('User_group_id').AsInteger;
fManagment.showmodal;
fManagment.free;
fLogin.Show;
end;
end
else
begin
ShowMessage ('No this type nuser:' + eName.Text + ', or error password');
aQry.Close;
end;
end
else
ShowMessage ('Query is empty');
finally
aConn.Close;
eName.Text := '';
ePwd.Text := '';
end;
end;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from users where names=:names');
adoquery1.Paramaters.ParamByName('names') := quotedstr(edit1.text);
adoquery1.open;if adoquery1.RecordCount = 0 do
begin
messagedlg('请确认你输入的用户名是否正确',mtwarning,[mbok],0);
adoquery1.Close;
Exit;
end else
if adoquery1.FiledByName('passwd').AsString <> edit2.text then
begin
messagedlg('密码错误',mtwarning,[mbok],0);
adoquery1.Close;
Exit;
end;//验证通过