ITXP365(智码IT网)

分享电脑知识,传播IT技巧

致敬爱学习的您,祝您访问愉快!

Delphi执行参数化的SQL命令示例


发布:智码IT网   阅读:
假设有参数化的SQL如下:INSERT INTO `tb1` (`person_name`, `age`, `else_info`) VALUES (:`person_name`, :age, :else_info);
现在需要用Delphi语言连接数据库,执行这个SQL命令,示例代码如下:

var sql := 'INSERT INTO `tb1` (`person_name`, `age`, `else_info`) VALUES (:`person_name`, :age, :else_info);';
var qry := TFDQuery.Create(nil);
try
  try
    qry.Connection := FDConMySQL;
    qry.FormatOptions.DefaultParamDataType := ftWideString;   //需要uses Data.DB   如果需要给参数赋Null值,则需要设置默认参数类型为ftWideString
    qry.SQL.Clear();

    qry.SQL.Add(sql);
    qry.Params.ParamByName('person_name').Value := 't1';
    qry.Params.ParamByName('age').Value := 1;
    qry.Params.ParamByName('else_info').Value := 'info1';
    qry.ExecSQL();

    qry.SQL.Add(sql);
    qry.Params.ParamByName('person_name').Value := 't2';
    qry.Params.ParamByName('age').Value := 2;
    qry.Params.ParamByName('else_info').Value := Null;  // 需要设置:qry.FormatOptions.DefaultParamDataType := ftWideString;
                                                                                        // 使用Null,需要uses System.Variants
    qry.ExecSQL();

  except
    on E: Exception do
    begin
      sExcept := E.Message;
    end;
  end;
finally
  FreeAndNil(qry);
end;

--------------------------------------------------------------------------------
【注意事项】
--------------------------------------------------------------------------------

1、sql语句中参数形式可以是:【:`person_name`】 或 【:person_name】 或 【[id]】

2、参数赋值时,参数名不能加[]、``、:等。
   【√】正确示例  :qry.Params.ParamByName('person_name').Value := 't1';

   【×】错误示例1:qry.Params.ParamByName(':`person_name`').Value := 't1';
   【×】错误示例2:qry.Params.ParamByName(':person_name').Value := 't1';
   【×】错误示例3:qry.Params.ParamByName('[id]').Value := 't1';

3、如果需要给参数赋Null值,则需要设置默认参数类型为ftWideString,如:
    qry.FormatOptions.DefaultParamDataType := ftWideString;

上一篇:没有了
下一篇:没有了

© 2001-智码IT网 www.itxp365.com版权所有

蜀ICP备2021001527号