上次贴过,回答都不正确,请给我一个正确的答案,谢谢!
连的是access数据库,提示update语法错误!!(我看不出哪儿错,把,改成and居然不报错,不过username的值不是0就是-1,我就奇了怪了,update语句里没有and的语法,应该是逗号分开,用and怎么会不报错,却给我一个值,妈的,什么破东西!!)
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from logmember where username=');
adoquery1.sql.add(''''+edit1.Text+''''+' and password=');
adoquery1.sql.add(''''+edit2.Text+'''');
adoquery1.open;
if recordcount>=1 then
begin
if (edit3.Text<>'') and (edit4.Text <> '') then
begin
adoquery1.sql.clear;
adoquery1.sql.add('update logmember set username=');
adoquery1.sql.add(''''+trim(edit3.Text)+''''+',');
adoquery1.sql.add('password='+''''+trim(edit4.Text)+'''');
ADOQuery1.ExecSQL;
end;
end;
end;
end;
end.
连的是access数据库,提示update语法错误!!(我看不出哪儿错,把,改成and居然不报错,不过username的值不是0就是-1,我就奇了怪了,update语句里没有and的语法,应该是逗号分开,用and怎么会不报错,却给我一个值,妈的,什么破东西!!)
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from logmember where username=');
adoquery1.sql.add(''''+edit1.Text+''''+' and password=');
adoquery1.sql.add(''''+edit2.Text+'''');
adoquery1.open;
if recordcount>=1 then
begin
if (edit3.Text<>'') and (edit4.Text <> '') then
begin
adoquery1.sql.clear;
adoquery1.sql.add('update logmember set username=');
adoquery1.sql.add(''''+trim(edit3.Text)+''''+',');
adoquery1.sql.add('password='+''''+trim(edit4.Text)+'''');
ADOQuery1.ExecSQL;
end;
end;
end;
end;
end.
我看看题先
begin
adoquery1.sql.clear;
adoquery1.sql.add('update logmember set username=');
adoquery1.sql.add(' '''+trim(edit3.Text)+''' , ' );
adoquery1.sql.add(' password = '''+trim(edit4.Text)+''' ');
ADOQuery1.ExecSQL;
end;弟弟试试这样。就把我的copy上去
str:='update logmember set username='''+trim(edit3.text)+''','+'password='''+trim(edit4.text)+'''';
adocommand1.commandtext:=str
adocommand1.execute;
2.使用最最普通的update语句执行更新操作.
3.输出SQL语句,直接执行,看看出不出错.
4.替换编辑框的所有的单引号为两个单引号.
ADO的保留字很多,username, password, id,name 这类的名字最好别用,或者加上 [username]这么用。
我现在的习惯是 f_username 都加上前缀
begin
adoquery1.sql.clear;
adoquery1.sql.add('update logmember set username = '
+ ''''+ trim(edit3.Text)+ ''','
+ ' password = '''+ trim(edit4.Text) + '''');
ADOQuery1.ExecSQL;
end;
1).安全问题,你的Select 就存在安全隐患,这个大家以前讨论过了,你的方法不可取。
2).更新语句没有Where条件,难道你要把所有的用户跟密码都更新?
单从语句上来讲,你的Update语句没什么问题,主要就是看你的字段类型之类的问题了。
谢谢大家!!
begin
with ADOQuery1 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(format('select * from logmember where username=[$S] and password=[$S]',[edit1.Text,edit2.Text]));
adoquery1.open;
if recordcount>=1 then
begin
if (edit3.Text<>'') and (edit4.Text <> '') then
begin
adoquery1.sql.clear;
adoquery1.sql.add(format('update logmember set username=[$S] , password=[$S]',[trim(edit3.Text),trim(edit4.Text)]));
ADOQuery1.ExecSQL;
end;
end;
end;
end;
end.
procedure TForm1.Button1Click(Sender: TObject);
var sqltext: string;
begin
if (edit3.Text <> '') and (edit4.Text <> '') then
begin
adoquery1.sql.clear;
sqltext := format('update temp set username=''%S'',password=''%S'' WHERE (((username)=''%S'') AND ((password)=''%S''));', [trim(edit3.Text), trim(edit4.Text), edit1.Text, edit2.Text]);
adoquery1.sql.add(sqltext);
ADOQuery1.ExecSQL;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from logmember where username=');
adoquery1.sql.add(#39+edit1.Text+#39+' and password=');
adoquery1.sql.add(#39+edit2.Text+#39);
adoquery1.open;
if recordcount>=1 then
begin
if (edit3.Text<>'') and (edit4.Text <> '') then
begin
adoquery1.sql.clear;
adoquery1.sql.add('update logmember set username=');
adoquery1.sql.add(#39+trim(edit3.Text)+#39+',');
adoquery1.sql.add('password='+#39+trim(edit4.Text)+#39);
ADOQuery1.ExecSQL;
end;
end;
end;
end;
end.哈哈,分给我吧!
把这个字段名改了吧,
access的关键字很多经常和字段名重,于是就出莫名其妙的错误
begin
with ADOQuery1 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from logmember where [username]=');
adoquery1.sql.add(''''+edit1.Text+''' and password='''+edit2.Text+'''');
adoquery1.open;
if recordcount>=1 then
begin
if (edit3.Text<>'') and (edit4.Text <> '') then
begin
adoquery1.sql.clear;
adoquery1.sql.add('update logmember set [username]=');
adoquery1.sql.add(''''+trim(edit3.Text)+''',password='''+trim(edit4.Text)+'''');
ADOQuery1.ExecSQL;
end;
end;
end;
end;
end.
begin
with ADOQuery1 do
begin
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from logmember where username=');
adoquery1.sql.add(''''+quotedstr(edit1.Text)+''''+' and password=');
adoquery1.sql.add(''''+quotedstr(edit2.Text)+'''');
adoquery1.open;
if recordcount>=1 then
begin
if (edit3.Text<>'') and (edit4.Text <> '') then
begin
adoquery1.sql.clear;
adoquery1.sql.add('update logmember set username=');
adoquery1.sql.add(''''+quotedstr(edit3.Text)+''''+',');
adoquery1.sql.add('password='+''''+quotedstr(edit4.Text)+'''');
ADOQuery1.ExecSQL;
end;
end;
end;
end;
end.