11 个解决方案
#1
AnsiString userPW;
userPW=Edit1->Text;
if(userPW==ADOQuery1->FieldByName("密码")->Value)
{...}
应该可以啊?
userPW=Edit1->Text;
if(userPW==ADOQuery1->FieldByName("密码")->Value)
{...}
应该可以啊?
#2
把你的代码贴出来,还有你的数据结构,不然不好知道你的问题在哪儿?
#3
以下是我的代码,已经测试过可以select出有关记录,就是对比不成功.
初学C++,代码很不规范,望指正.
void __fastcall TForm2::Button1Click(TObject *Sender)
{
//考生登录
Form2->ADOConnection1->Connected=true;
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
}
初学C++,代码很不规范,望指正.
void __fastcall TForm2::Button1Click(TObject *Sender)
{
//考生登录
Form2->ADOConnection1->Connected=true;
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
}
#4
表中的stu_pwd字段为char(20).
#5
if(Trim(tmp_name)==Trim(Edit1->Text) && Trim(tmp_pwd)==Trim(MaskEdit1->Text))
或是修改sql语句:
sql ="Select rtrim(stu_name),rtrim(stu_pwd) from student where stu_code=";
或是修改数据表结构:交char型改为varchar型就不会有空格的问题了
或是修改sql语句:
sql ="Select rtrim(stu_name),rtrim(stu_pwd) from student where stu_code=";
或是修改数据表结构:交char型改为varchar型就不会有空格的问题了
#6
搞定了.原来是我搞错了,输入密码是应该是Edit2,而不是MaskEdit1.
多谢两位帮忙!我迟点结帖.
随便问问叶子(其他人有经验也可以说说).学习BCB应该主意什么?
怎样才能写个好的程序出来?
多谢两位帮忙!我迟点结帖.
随便问问叶子(其他人有经验也可以说说).学习BCB应该主意什么?
怎样才能写个好的程序出来?
#7
哈哈!
多做项目,如此而已!
多做项目,如此而已!
#8
呵呵,多向叶子这样的星星们学习。
(嘿嘿,拍拍马屁~)
(嘿嘿,拍拍马屁~)
#9
呵呵~在学了.不过像一只没头的苍蝇,在周围乱飞呢~
有什么项目不难又可以讲到东西的?我在试做一个考试系统.不过就上面一点点就卡了我半天,哈哈.
是啦,如果我向BCB方向发展不知会不会很难找到一条好的出路?J2EE会好点吗?
有什么项目不难又可以讲到东西的?我在试做一个考试系统.不过就上面一点点就卡了我半天,哈哈.
是啦,如果我向BCB方向发展不知会不会很难找到一条好的出路?J2EE会好点吗?
#10
Form2->ADOConnection1->Connected=true;
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->Close();//前面Open是否关闭;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;//无需,Open方法已经激活;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
ADOQuery1->Close();//记住关闭select数据集;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->Close();//前面Open是否关闭;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;//无需,Open方法已经激活;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
ADOQuery1->Close();//记住关闭select数据集;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
#11
AnsiString userPW;
userPW=Edit1->Text.Trim();
if(userPW==ADOQuery1->FieldByName("密码")->AsString.Trim())
{...}
试试,两头去空格,不然你从数据库里读出来的密码是“密码 ”(一共你设计的位数);
userPW=Edit1->Text.Trim();
if(userPW==ADOQuery1->FieldByName("密码")->AsString.Trim())
{...}
试试,两头去空格,不然你从数据库里读出来的密码是“密码 ”(一共你设计的位数);
#1
AnsiString userPW;
userPW=Edit1->Text;
if(userPW==ADOQuery1->FieldByName("密码")->Value)
{...}
应该可以啊?
userPW=Edit1->Text;
if(userPW==ADOQuery1->FieldByName("密码")->Value)
{...}
应该可以啊?
#2
把你的代码贴出来,还有你的数据结构,不然不好知道你的问题在哪儿?
#3
以下是我的代码,已经测试过可以select出有关记录,就是对比不成功.
初学C++,代码很不规范,望指正.
void __fastcall TForm2::Button1Click(TObject *Sender)
{
//考生登录
Form2->ADOConnection1->Connected=true;
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
}
初学C++,代码很不规范,望指正.
void __fastcall TForm2::Button1Click(TObject *Sender)
{
//考生登录
Form2->ADOConnection1->Connected=true;
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
}
#4
表中的stu_pwd字段为char(20).
#5
if(Trim(tmp_name)==Trim(Edit1->Text) && Trim(tmp_pwd)==Trim(MaskEdit1->Text))
或是修改sql语句:
sql ="Select rtrim(stu_name),rtrim(stu_pwd) from student where stu_code=";
或是修改数据表结构:交char型改为varchar型就不会有空格的问题了
或是修改sql语句:
sql ="Select rtrim(stu_name),rtrim(stu_pwd) from student where stu_code=";
或是修改数据表结构:交char型改为varchar型就不会有空格的问题了
#6
搞定了.原来是我搞错了,输入密码是应该是Edit2,而不是MaskEdit1.
多谢两位帮忙!我迟点结帖.
随便问问叶子(其他人有经验也可以说说).学习BCB应该主意什么?
怎样才能写个好的程序出来?
多谢两位帮忙!我迟点结帖.
随便问问叶子(其他人有经验也可以说说).学习BCB应该主意什么?
怎样才能写个好的程序出来?
#7
哈哈!
多做项目,如此而已!
多做项目,如此而已!
#8
呵呵,多向叶子这样的星星们学习。
(嘿嘿,拍拍马屁~)
(嘿嘿,拍拍马屁~)
#9
呵呵~在学了.不过像一只没头的苍蝇,在周围乱飞呢~
有什么项目不难又可以讲到东西的?我在试做一个考试系统.不过就上面一点点就卡了我半天,哈哈.
是啦,如果我向BCB方向发展不知会不会很难找到一条好的出路?J2EE会好点吗?
有什么项目不难又可以讲到东西的?我在试做一个考试系统.不过就上面一点点就卡了我半天,哈哈.
是啦,如果我向BCB方向发展不知会不会很难找到一条好的出路?J2EE会好点吗?
#10
Form2->ADOConnection1->Connected=true;
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->Close();//前面Open是否关闭;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;//无需,Open方法已经激活;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
ADOQuery1->Close();//记住关闭select数据集;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
AnsiString sql="";
sql ="Select * from student where stu_code=";
sql += MaskEdit1->Text;
ADOQuery1->Close();//前面Open是否关闭;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sql);
ADOQuery1->Active=true;//无需,Open方法已经激活;
ADOQuery1->Open();
tmp_name=ADOQuery1->FieldByName("stu_name")->Value;
tmp_pwd=ADOQuery1->FieldByName("stu_pwd")->Value;
ADOQuery1->Close();//记住关闭select数据集;
Form1->name=tmp_name;
Form1->code=MaskEdit1->Text;
if(tmp_name==Edit1->Text&&tmp_pwd==MaskEdit1->Text)
{
login = 1;
}
else {login=0;}
ShowMessage(login); //无论输入里否正确,login都是等于0
#11
AnsiString userPW;
userPW=Edit1->Text.Trim();
if(userPW==ADOQuery1->FieldByName("密码")->AsString.Trim())
{...}
试试,两头去空格,不然你从数据库里读出来的密码是“密码 ”(一共你设计的位数);
userPW=Edit1->Text.Trim();
if(userPW==ADOQuery1->FieldByName("密码")->AsString.Trim())
{...}
试试,两头去空格,不然你从数据库里读出来的密码是“密码 ”(一共你设计的位数);