UPDATE语法错误,为什么呢?请高手指教

acqy 2004-06-23 10:41:40
我使用TADOQuery来执行数据表的修改操作,下面是我的代码:

var sql:string;
begin
sql := 'UPDATE t_members SET MemberID=4, MemberName=''name1'', Birth=32215.3589314583, Relation=''其他'', Memo='''' WHERE MemberID=4';
//...
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add (sql);
ADOQuery.Execsql;
//...
end;

但是编译以后在“ADOQuery.Execsql”处提示错误:UPDATE语句语法错误。

(我把整个SQL语句复制到Access数据库中执行没有错误!)
...全文
194 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lijinghe1 2004-06-24
sql := 'UPDATE t_members SET MemberID=4, MemberName=''name1'', Birth=32215.3589314583, Relation=''其他'', [Memo]='''' WHERE MemberID=4';

memo为保留字,加中括号
  • 打赏
  • 举报
回复
yongjoon 2004-06-24
EXECSQL换成open
  • 打赏
  • 举报
回复
acqy 2004-06-24
呵呵.谢谢!
lijinghe1说对了.问题解决了
  • 打赏
  • 举报
回复
sxyjwfeng 2004-06-23
Birth 是不是个日期型的,把birth去掉试试,或一个一个字段那样试试,看看具体是那个字段的问题
  • 打赏
  • 举报
回复
wywry 2004-06-23
不用execsql,直接用AdoQuery.open;
是不是你的adoquery关联一些控件,使用execsql不会返回结果的
  • 打赏
  • 举报
回复
IwantFlay 2004-06-23
up
  • 打赏
  • 举报
回复
youhuiyun 2004-06-23
你先直接在数据库里执行sql语句,看是否成立?
  • 打赏
  • 举报
回复
yinweixian 2004-06-23
sql := 'UPDATE t_members SET MemberID=4, MemberName='''+'name1'+''''+', Birth=32215.3589314583, Relation='''+'其他'+''''+', Memo='''+''''+' WHERE MemberID=4';
  • 打赏
  • 举报
回复
acqy 2004-06-23
上面两位所说的方法我试过了,没有用
  • 打赏
  • 举报
回复
cronuz 2004-06-23
{...}
ADOQuery.SQL.Text := sql;
ADOQuery.Execsql;
  • 打赏
  • 举报
回复
loon1981 2004-06-23
可能是这个32215.3589314583 中的小数点在作怪。
你把他存放一个变量里试试。。
  • 打赏
  • 举报
回复
chwdong 2004-06-23
sql := 'UPDATE t_members SET MemberID=4, MemberName=''name1'', Birth=32215.3589314583, Relation=''其他'', Memo='''' WHERE MemberID=4';

s_1:='name1';
s_2:='其他';
s_3:='';

sql:='update t_members set momberid=4,memborname='+quotestr(s_1)+',birth=33333.33333,relation='+quotestr(s_2)+',memo='+quotestr(s_3)+' where memberid=4';
  • 打赏
  • 举报
回复
xiaocuo_zrf 2004-06-23
sql := 'UPDATE t_members SET MemberID=4, MemberName='+QuotedStr('name1')
+', Birth=32215.3589314583, Relation='+Quotedstr('其他')
+', Memo=QuotedStr('') +'WHERE MemberID=4';
  • 打赏
  • 举报
回复
insert2003 2004-06-23
语法没错!
是不是数据库结构不对?
还有SET MemberID=4 WHERE MemberID=4
是不是......
  • 打赏
  • 举报
回复
dshha 2004-06-23
如果一下这些字段都是字符串类型的话,birth除外,可以这么写:
sql := 'UPDATE t_members SET MemberID=''4'', MemberName=''name1'', Birth=32215.3589314583, Relation=''其他'', Memo='''' WHERE MemberID=''4''';
  • 打赏
  • 举报
回复
foxe 2004-06-23
to wywry(wyatt) 用execsql是没错了,如果用open的话可是要出异常的!update本来就不用返回结果集的
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库相关

2474

社区成员

Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
帖子事件
创建了帖子
2004-06-23 10:41
社区公告
暂无公告