在这里停了:
if Edit1.Text=Query1.FieldByName('PassWord').asstring then
if Edit1.Text=Query1.FieldByName('PassWord').asstring then
解决方案 »
- 求高手帮忙优化一下以下代码。。
- 偶好久没用过delphi了,那天一人出了一道题,我居然连delphi的语法都记不还清了,这想这儿一定有高手可以帮忙~!!!!!!
- 我最近做了一个Shell扩展,不知道怎么调试?
- 散!
- 大家来讨论一下WEB SERVER+mts 四层结构的多帐套系统的设计方法
- 如何写入在SqlServer 2005中datetime 的空值即默认值为null
- 如何在程序中调试时调到所用组个的内部(源程序里),一般如果组件有错,就会进行组件的源代码中,我想在正常的情况下,调试到组件内部怎么
- http://webplay.myrice.com中的控件已可正常下载了
- 如何用DELPHI 5编写MP3播放器和.MPG播放器??
- 数据库过程建立问题求请!
- 怎样在delphi编程中列出所有函数成员,以供调用?
- 怪!怪!怪!这样的sql语句为什么会出错???请高手关注:)???
if Edit1.Text=Query1.Fields[0].asstring then
try
Query1.Open;
except
end;别try呀,Open出错误你都看不见了,数据库中肯定没有PassWord这个字段,要不就是大小写有问题。
数据库又这个字段,大小写试对的.不知道query还有怎么设置?
有Query1: TQuery;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource这几个够吗?
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select PassWord form login where Name=:username');
Query1.ParamByName('username').asstring:=Combobox1.Text;
try //你这里不用try试一试,
Query1.Open;
except
end;
showmessage(Query1.FieldByName('PassWord').asstring)//你再用这条语句试试,看它
是什么?
如下连接又问题吗?
query河data source连接了,datasource连接了adotable,adotable和ADOConnection连接,
query里有个database没有连接,改连接哪个,好像试要用bde的时候才用得上这个的对吗?
错在这里 Query1.SQL.Add('select PassWord form login where Name=:username');
form--from;
但是,改了以后,还是又问题.我用ado的改成了用bde就可以了.
我把程序改如下,用了ADOQuery了,提示"update语句错误"why?unit pswd;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, ADODB, DBTables, DBCtrls;type
TPass = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ComboBox1: TComboBox;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Pass: TPass;implementation{$R *.DFM}procedure TPass.FormCreate(Sender: TObject);
Var
S:string;
begin
With ADOQuery1 do
begin
Active:=false;
S:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source="'+ExtractFilePath(Application.ExeName);
S:=S+'Students.mdb";Mode=Share Deny None;Extended Properties="";';
S:=S+'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;';
S:=S+'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;';
S:=S+'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
ConnectionString:=S;
end;
with ADOTable1 do
begin
ConnectionString:=S;
ADOTable1.Active:=true;
Combobox1.Items.Clear;
First;
while not Eof do
begin
Combobox1.Items.Add(Fields[0].AsString);
Next;
end;
end;
end;procedure TPass.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select Password from login where Name=:username');
ADOQuery1.Parameters[0].Value:=Combobox1.Text;
try
ADOQuery1.Open;
except
end;
if Edit1.Text=ADOQuery1.FieldByName('Password').asstring then
begin
if Edit2.Text<>Edit3.Text then
begin
showmessage('新密码有误,请确认');
Edit2.SetFocus;
Exit;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update login set Password=:psd where Name=:username');
ADOQuery1.Parameters[1].value:=Edit2.Text;
ADOQuery1.Parameters[0].value:=Combobox1.Text;
try
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
except
end;
showmessage('密码修改成功!');
end
else
begin
showmessage('原密码错误!');
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit1.SetFocus;
exit;
end;
end;procedure TPass.ComboBox1Change(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
end;end.
ADOQuery1.SQL.Add('update login set Password=:psd where Name=:username');
ADOQuery1.Parameters[1].value:=Edit2.Text;
ADOQuery1.Parameters[0].value:=Combobox1.Text;程序执行到这里停了:
ADOQuery1.ExecSQL;
运行出错,提示密码修改成功,但是并没有改过来,还是原来的密码.
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;
except
end;
这里又屏蔽异常了,所以会提示“密码修改成功”另外,在前面的应该是0,在后面的是1,即[0]应是Password,[1]应为UserName