DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 6
在线用户: 30
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 esmall (esmall) ▲▲▲▲▲ -
普通会员
2020/2/16 14:29:58
标题:
FDQuery1.ExecSQL执行出错时,怎样显示错误的SQL语句? 浏览:1903
加入我的收藏
楼主: FDQuery1:TFDQuery

try
  FDQuery1.ExecSQL('INSERT INTO Test(ID,Name,Date) VALUES(:ID,:Name,:Date)',[FieldByName('ID').AsInteger, FieldByName('Name').AsString, FieldByName('Date').AsDateTime]);
except
  on e: Exception do 
    sError := e.Message +':'+ FDQuery1.SQL.Text;
end;

如上,sError得到的语句不全,没有后面的参数,有其它属性可以得到吗?
还是要自己写?
----------------------------------------------
-
作者:
男 tulater (tulater) ★☆☆☆☆ -
普通会员
2020/2/16 15:34:06
1楼: 用个临时变量

try
    aStr:='INSERT INTO Test(ID,Name,Date) VALUES(:ID,:Name,:Date)',[FieldByName('ID').AsInteger, FieldByName('Name').AsString, FieldByName('Date').AsDateTime];
    FDQuery1.ExecSQL(aStr);
  on e: Exception do 
    sError := e.Message +':'+ aStr;
end;
----------------------------------------------
http://www.cnblogs.com/tulater/
作者:
男 esmall (esmall) ▲▲▲▲▲ -
普通会员
2020/2/16 15:45:14
2楼: to tulater:
aStr:='INSERT INTO Test(ID,Name,Date) VALUES(:ID,:Name,:Date)',[FieldByName('ID').AsInteger, FieldByName('Name').AsString, FieldByName('Date').AsDateTime];

这条语句编译不可能通过吧。。。
----------------------------------------------
-
作者:
男 sun2grit (Asun) ★☆☆☆☆ -
盒子活跃会员
2020/2/16 16:36:22
3楼: 用EurekaLog跟踪试试
----------------------------------------------
家具安装 万师傅家具安装平台 安装维修师傅黄页 一键式测量仪
作者:
男 tulater (tulater) ★☆☆☆☆ -
普通会员
2020/2/16 20:59:49
4楼: 我是直接写 不用   参数
    FDQuery1.ExecSQL('INSERT INTO ToDoListTable VALUES(null,   '''+uniEdit1.Text+''',0)');
----------------------------------------------
http://www.cnblogs.com/tulater/
作者:
男 esmall (esmall) ▲▲▲▲▲ -
普通会员
2020/2/17 15:55:18
5楼: to tulater:
如下面的代码:

try
  FDQuery1.ExecSQL('INSERT INTO Test(ID,Name,Date) VALUES(:ID,:Name,:Date)',[FieldByName('ID').AsInteger, FieldByName('Name').AsString, FieldByName('Date').AsDateTime]);
except
  on e: Exception do 
    sError := e.Message +':'+ FDQuery1.SQL.Text;
end;

如果SQL执行出错了,FDQuery1.SQL.Text返回的是这样的字符串,
如:INSERT INTO Test(ID,Name,Date) VALUES(:ID,:Name,:Date)

我希望能得到真正执行的SQL语句,
如:INSERT INTO Test(ID,Name,Date) VALUES(1,'小明','2020/1/1 15:00:00')

请问哪位高手会呢?



(因为用ExecSQL带参数的方式写代码比较简便,不管什么数据类型都不需要自己处理了,很方便。)
----------------------------------------------
-
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2020/2/18 7:51:22
6楼: AsDateTime 说明 还是 自己判断 参数数据类型的啊
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行74.21875毫秒 RSS