验证用户登录的问题!保证给分!
我自己设计了一个输入用户名和密码的窗体:TForm1,下面是登陆按钮的代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString username,pwd;
username=Edit1->Text;//Edit1 为用户名输入框
ADOQuery1->SQL->Text="select * from administrator where administrator='abc'";//现在只能固定用户名为'abc',主要问题就在这
ADOQuery1->Active=true;
pwd=Edit2->Text;//Edit2 为密码输入框
if (DBEdit1->EditText==pwd)//不好意思,我不太熟悉怎么核对密码,就拉了
//TDBEdit 让他显示数据库表中的密码(当然
//我已经让这个控件隐藏了)再跟用户输入
//的密码进行比较,高手们,顺便指示一个简单
//方法喽
this->Close();//核对正确,关闭本窗体
我想把 “select * from administrator where administrator=”和 username串接起来,送给ADOQuery1->SQL->Text;然后开始执行统一查询;
但是怎么做语法都不对!
请为该怎么做??
非常非常地感谢!!!!!!!
}
问题点数:32、回复次数:14Top
1 楼gloom(苍狗白云)回复于 2001-08-21 11:08:56 得分 0
upTop
2 楼kigy(阿群)回复于 2001-08-21 11:12:47 得分 0
c++ builder 里的高手比vc里的少多了!
还请大虾帮忙啊Top
3 楼yuyulily(打工仔)回复于 2001-08-21 11:19:28 得分 0
ADOQuery1->SQL->Text="select * from administrator where administrator=“+username;Top
4 楼LuoGD(抢第一楼)回复于 2001-08-21 11:21:07 得分 10
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString username,pwd;
username=Edit1->Text;//Edit1 为用户名输入框
if(ADOQuery1->Active) ADOQuery1->Close();
ADOQuery1->Sql->Clear();
ADOQuery1->SQL->Add("select * from administrator where administrator='");
ADOQuery1->SQL->Add(username);
ADOQuery1->SQL->Add("'");
ADOQuery1->ExecSQL();
ADOQuery1->Open();
......
Top
5 楼wangledong(雪山之鹰)回复于 2001-08-21 11:26:36 得分 0
ADOQuery1->SQL->Text="select * from administrator where administrator='"+username+"'"
就可以了!Top
6 楼huangbai(黄柏)回复于 2001-08-21 11:28:15 得分 0
如果对系统安全性要求不高的话,可以用以上代码,
否则,以上代码一定不能用。
ADOQuery可以这样做:
ADOQuery1->SQL->Text="select * from administrator \
where administrator='"+username+"'";
不知是否对。
Top
7 楼HEROIN(HEROIN)回复于 2001-08-21 11:33:14 得分 0
假设我输入的用户名为 xyx' or administrator<>' 会出现什么效果?
呵呵,钻牛角尖了Top
8 楼XioGua(明日复明日)回复于 2001-08-21 11:36:06 得分 0
这种方法进行登录验证,在TRW下更本无处遁形...
哈哈~~~~Top
9 楼wangledong(雪山之鹰)回复于 2001-08-21 11:42:15 得分 2
因该不允许用户输入"'"和"<"">"等关键字符!Top
10 楼sjz9521(笨笨)回复于 2001-08-21 11:56:32 得分 20
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString username,pwd;
username=Edit1->Text;//Edit1 为用户名输入框
ADOQuery1->SQL->Text="select * from administrator where administrator='abc'";//现在只能固定用户名为'abc',主要问题就在这
ADOQuery1->Active=true;
pwd=Edit2->Text;//Edit2 为密码输入框
/******************************************
if(Trim(ADOQuery1->Fields-Fields[0]->AsString)==Trim(Edit2->Text))
/******************************************
if (DBEdit1->EditText==pwd)//不好意思,我不太熟悉怎么核对密码,就拉了
//TDBEdit 让他显示数据库表中的密码(当然
//我已经让这个控件隐藏了)再跟用户输入
//的密码进行比较,高手们,顺便指示一个简单
//方法喽
this->Close();//核对正确,关闭本窗体
我想把 “select * from administrator where administrator=”和 username串接起
/***********************
select * from administrator where administrator='abc' and username='"+Trim(Edit2->Text)+"'
/**********************
来,送给ADOQuery1->SQL->Text;然后开始执行统一查询;
但是怎么做语法都不对!
请为该怎么做??
非常非常地感谢!!!!!!!
}Top
11 楼huangbai(黄柏)回复于 2001-08-21 12:38:58 得分 0
是什么语法都不对?
把Erro Message贴上来吧!Top
12 楼kigy(阿群)回复于 2001-08-21 12:47:32 得分 0
我已经会了:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString username,pwd;
username=Edit1->Text;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from administrator");
ADOQuery1->SQL->Add("where administrator=" + QuotedStr(username));
ADOQuery1->Active=true;
pwd=Edit2->Text;
if (DBEdit1->EditText==username)
if (DBEdit2->EditText==pwd)
{if (username!="")
this->Close();
else
{
Edit1->Text="";
Edit2->Text="";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
}
}
}
下面进行给粉!Top
13 楼kigy(阿群)回复于 2001-08-21 12:48:22 得分 0
我已经会了:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString username,pwd;
username=Edit1->Text;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from administrator");
ADOQuery1->SQL->Add("where administrator=" + QuotedStr(username));
ADOQuery1->Active=true;
pwd=Edit2->Text;
if (DBEdit1->EditText==username)
if (DBEdit2->EditText==pwd)
{if (username!="")
this->Close();
else
{
Edit1->Text="";
Edit2->Text="";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
}
}
}
下面进行给粉!Top
14 楼kigy(阿群)回复于 2001-08-21 12:51:54 得分 0
我已经会了:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString username,pwd;
username=Edit1->Text;
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from administrator");
ADOQuery1->SQL->Add("where administrator=" + QuotedStr(username));
ADOQuery1->Active=true;
pwd=Edit2->Text;
if (DBEdit1->EditText==username)
if (DBEdit2->EditText==pwd)
{if (username!="")
this->Close();
else
{
Edit1->Text="";
Edit2->Text="";
ADOQuery1->Active=false;
ADOQuery1->SQL->Clear();
}
}
}
下面进行给粉!Top




