【发布时间】:2013-12-28 10:41:27
【问题描述】:
我有一些 SQL 命令,其中包含一个参数,例如:(注意 myID 在 SQL 中具有“int”类型)
vSqlString :='Select * From myTable Where myID= :paramID';
并使用 ParseSQL 命令执行此命令:
myADOQuery.Parameters.ParseSQL(vSqlString , True);
现在 myADOQuery.Parameters.ParamByName('paramID').DataType 是 smallint 类型,它不能接受负整数值。
我可以准确地向编译器显示我的 Parameter[0].DataType 是 ftInteger 并且它可以正常工作,但是对于这个问题有什么好的解决方案?
【问题讨论】:
-
您是否尝试过更改数据类型:
myADOQuery.Parameters.ParamByName('paramID').DataType := ftInteger; -
您也可以手动设置参数,而不是调用 ParseSQL。
-
你的数据库后端是什么? Smallint 类型对于标识列是不是很奇怪?
-
@MohammadGohari 我认为这是最好的解决方案。编译器无法查询数据库以查看列数据类型是什么,因此您必须告诉它。我个人不使用 ParseSQL,我在代码中设置了参数,所以我可以完全控制。
-
看这篇文章[ADOQuery.ParseSql][1][1]:stackoverflow.com/questions/21194122/…
标签: sql delphi ado delphi-xe4 tadoquery