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数据库中执行没有错误!)
...全文
218 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
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本来就不用返回结果集的

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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