关于sql语句

mmxer 2000-08-22 12:27:00
下面的一段代码有什么错误,真是不可理解:
with query1 do
begin
databasename:='test_data';
sql.add('update tb1');
sql.add('set value='+''''+'000001'+'''');
sql.add('where no='+'''''+'000005'+''''');
execsql;
end;
...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bpc 2000-08-22
  • 打赏
  • 举报
回复
象你这样写的话。
这个语句只能执行一次
或者不能执行;
规范一点应该是:
with query1 do
begin
databasename:='test_data';
close;
sql.clear;
sql.add('update tb1');
sql.add('set value='+''''+'000001'+'''');
sql.add('where no='+''''+'000005'+'''');
execsql;
end;
若有错误提示,应该是参数的原因,看firing_sky的答案。。。。
Firing_Sky 2000-08-22
  • 打赏
  • 举报
回复
no似乎也是保留字
lotto 2000-08-22
  • 打赏
  • 举报
回复
你使用的value是保留字,不能用作字段名,如果你一定要使用请加上,tb1,既:
sql.add('set tb1.value='+''''+'000001'+'''');
Firing_Sky 2000-08-22
  • 打赏
  • 举报
回复
sql.add('where no='+'''''+'000005'+''''');
应改为
sql.add('where no='+''''+'000005'+'''');
其实这种地方应该用Params来传递参数更合适
halfone 2000-08-22
  • 打赏
  • 举报
回复
with query1 do
begin
databasename:='test_data';
sql.add('update tb1');
sql.add('set value='+''''+'000001'+'''');
sql.add('where no='+''''+'000005'+'''');
execsql;
end;
Lentil 2000-08-22
  • 打赏
  • 举报
回复
其实简化的写法可以这样写
with query1 do
begin
DataBaseName:='test_data';
close; //关闭打开的查询
sql.Clear; //将其原先语句清空
sql.Add('update tab1 set value=:svalue where no=:snumber'); //
sql.ParamByName('svalue').AsString:='000001';
sql.ParamByName('snumber').AsString:='000005';
ExecSql;
end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧