delphi中使用sql语句加条件引用时值是一个整型变量的问题
2017-10-13 16:17
393 查看
SQL为数据库的操作提供了很多方法,结合起delphi,要想按自己的需要得到预想的结果,却要经过SQL测试再到delphi里的语句这样一个过程。目前我就遇到一个难题:就是在查询语句中使用条件,但条件引用的是一个整型变量(string变量最简单),整型变量却不容易清楚,想到这是遇到的问题,先搞清楚再继续工作。以下是我用的语句(简化了):
利用参数传值,虽然还不太清楚,这个应该试一下吧,但愿一切如意。经过测试4000,光是上面的代码也是不对的,应该这样写:
var mydata:integer; …… sql.add(format('select * from stdinfo where grade="%d"',[mydata])); ……但是不能通过,不知道是哪里来的语句,我是上网看别人的帖子得的。先以为是符号问题,不是这样,我试了几回&和*甚至是^,不对。可能是没有这样的用法,在Q群上,朋友们说是%的引用不对,好像是要sql动态参数传值,而delphi要用:所以有
1 var graden:integer; 2 begin 3 graden:=4;//测试用的数据 4 with adoquery1 do 5 begin 6 close; 7 sql.Clear; 8 sql.Add('select grade,class,name from stdinfo where grade=:p1'); 9 Parameters.ParamByName('p1').Value:=graden; 10 open;注意:值得一提的是,SQL语句中条件引用一个变量值时,要用parameters传值,而网上什么asinteger之类的也要视情况而定,我用的paramByname就没有.asinteger的选项,这点可能是delphi版本所至,有的语句可能是delphi 6.0的或其它,我用7.0。
var FmOperator: TFmOperator; OperID: string; Modified: Boolean; implementation {$R *.dfm} procedure TFmOperator.btnDelClick(Sender: TObject); begin if Modified then begin if MessageBox(Handle, PChar('确定要删除选定的操作员吗?'), PChar('提示'), MB_ICONQUESTION+MB_okCancel) = IDOK then begin with DM.qryOperator do begin Close; SQL.Clear; sql.Add('Delete from [Operator] where ID = :P1'); Parameters.ParamByName('P1').Value:=StrToInt(OperID); ExecSQL; SQL.Clear; SQL.Text := 'select * from [Operator]'; Open; end; end; end; end;看完博客后自己使用实例并且成功执行,xe2版本。补充:另外一种解决办法SQL.Text := 'Delete from [Operator] where ID ='+ OperID;直接sql语句在后面加 integer类型 如果是string类型
SQL.Text := 'Delete from [Operator] where ID ='+quotedstr( OperID) ';完毕!
相关文章推荐
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- 关于统计的一个sql问题,使用动态sql语句实现。
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- "执行SQL语句时出现问题操作必须使用一个可更新的查询"错误的解决方法
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- SQL:行合并问题 & 使用 SP_executesql 从exec('SQL语句') 中得到一个返回值
- 执行SQL语句时出现问题操作必须使用一个可更新的查询错误的解决方法
- 使用SQL查询语句时,数组动态赋值SQL IN ()作为条件条件一个
- 关于一个sql语句需要使用约等于的问题
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- 关于统计的一个sql问题,使用动态sql语句实现。
- SQL SELECT INTO 语句使用问题
- SQL语句学习,外连接与条件配合使用 (转载)
- NHibernate问题 flush-mode 一个事务中重复提交更新的SQL语句
- 记下一条使用SQLServer 2000 T-SQL中日期函数比较多的一个SQL语句
- SQL SELECT INTO 语句使用问题
- 一个SQL语句的问题:行列转换
- 在Delphi中使用SQL语句插入包括时间日期的记录
- 关于sql查询语句 的一个问题