大家说说用ParamByName有什么利弊(10分)

  • 主题发起人 主题发起人 ntjrr
  • 开始时间 开始时间
N

ntjrr

Unregistered / Unconfirmed
GUEST, unregistred user!
ado.sql.add(' and the_date =''' + formatdatetime(yyyy-m-d',date) + '''');

ado.sql.add(' and the_date =:date1');
ado.Parameters.ParamByName('Date1').Value:=formatdatetime(yyyy-m-d',date)
一种是不带参数,一种带参数,哪种好一点?我在SQL数据库的情况下,发现一个问题,就是在子查询里面带参数条件查询,如果条件是中文内容的话查询是会出错的,但在ACCESS数据库下未发现任何问题,在SQL数据库不是包含子查询的情况下也不会出错。
 
后者好于前者 一定层度上后者可以避免sql注入攻击 这样写更安全
 
好处
参数是经过检查的,防止攻击
坏处
做日期格式可能不能得到正确的值
例如 ado.parameters.parambyname('date1').value := formatdatetime('yyy-m-d',date);
formatdatetime 结果明明是 2007-1-1 这样的格式,
但是用mssql 跟踪器 ,获得的却是 2007 01 01 这样的格式
 
parambyname有一个问题,就是这个参数是字符串并且开头有空格的话,这些空格会被去掉。
 
坏处
做日期格式可能不能得到正确的值
例如 ado.parameters.parambyname('date1').value := formatdatetime('yyy-m-d',date);
formatdatetime 结果明明是 2007-1-1 这样的格式,
但是用mssql 跟踪器 ,获得的却是 2007 01 01 这样的格式

我试了很多种日期格式,用参数时没有发现错误。
 
多人接受答案了。
 
后退
顶部