Delphi使用TFDQuery执行SQL查询取值抛出EDatabaseError异常如何处理
异常产生原因
- 语法逻辑错误:你当前编写的代码是写入操作而非取值操作。
FdTmp2.FieldByName('PATH_FILE').AsString := TEST;的作用是将变量TEST的值写入PATH_FILE字段,若数据集未处于编辑状态,该操作会直接触发EDatabaseError异常。 - 查询未执行:仅给
SQL.Text赋值不会触发查询执行,你没有调用Open方法加载结果集时,数据集为空,FieldByName无法找到对应字段,会抛出该异常。 - 其他可能原因:查询的
STORAGE_DATA表不存在PATH_FILE字段(拼写错误、大小写和数据库定义不匹配)、查询返回结果集为空、数据库连接异常无权限执行查询。
正确获取字段文本值的方法
- 先执行SELECT查询加载结果集:
// 给查询组件赋值SQL语句 FdTmp2.SQL.Text := 'SELECT PATH_FILE FROM STORAGE_DATA'; // SELECT查询需要调用Open方法执行,返回结果集 FdTmp2.Open;
- 正确编写取值逻辑,将字段值赋值给接收变量:
var TEST: string; begin // 先判断结果集是否有数据,避免空结果报错 if not FdTmp2.IsEmpty then begin // 取值语法为 接收变量 := 字段值,和你之前写的赋值方向相反 TEST := FdTmp2.FieldByName('PATH_FILE').AsString; end; // 结果集用完后关闭 FdTmp2.Close; end;
内容的提问来源于stack exchange,提问作者Marcol1no
相关产品推荐
相关产品推荐

