Sql 在谈话中执行备忘录的内容

Sql 在谈话中执行备忘录的内容,sql,sql-server,delphi,delphi-xe,Sql,Sql Server,Delphi,Delphi Xe,我在备忘录上有一个很长的sql命令列表,当我尝试执行它时,我得到以下错误: 参数对象定义不正确。提供的信息不一致或不完整。 执行它的代码: Query.SQL.Text := Memo1.Lines.Text; Query.ExecSQL; 我有一个模糊的想法,即错误是由于添加查询内容的方式造成的,因此,我现在是这样做的: 1) Memo1.Lines.LoadFromFile('Patch.sql') 2) 继续执行查询命令 如您所见,备忘录的内容是从文件加载的。有没有其他方法可以成功做到这

我在备忘录上有一个很长的sql命令列表,当我尝试执行它时,我得到以下错误:

参数对象定义不正确。提供的信息不一致或不完整。

执行它的代码:

Query.SQL.Text := Memo1.Lines.Text;
Query.ExecSQL;
我有一个模糊的想法,即错误是由于添加查询内容的方式造成的,因此,我现在是这样做的:

1) Memo1.Lines.LoadFromFile('Patch.sql')

2) 继续执行查询命令

如您所见,备忘录的内容是从文件加载的。有没有其他方法可以成功做到这一点

注:我使用的是微软SQL 2008


谢谢大家!

看起来您没有使用参数,所以将
ParamCheck
设置为off

Query.ParamCheck := false;

如果SQL中的字符串中有冒号“:”,则TADOQuery会认为它是一个参数

看起来您没有使用参数,因此将
ParamCheck
设置为off

Query.ParamCheck := false;

如果SQL中的字符串中有一个冒号“:”,TADOQuery会认为它是一个参数

您可以很容易地通过完全忽略它来确定memo控件是否与问题相关:
Query.SQL.LoadFromFile('Patch.SQL')
。你还会犯同样的错误吗?如果是这样,那么您的SQL是错误的。如果不是,那么备忘录就有些问题。我希望这是一种曝光有限的内部开发人员工具,因为这听起来像是一个等待发生的SQL注入攻击。完全忽略它,您可以很容易地确定备忘录控件是否与问题相关:
Query.SQL.LoadFromFile('Patch.SQL')
。你还会犯同样的错误吗?如果是这样,那么您的SQL是错误的。如果不是,那么备忘录中有一些东西。我希望这是一种曝光有限的内部开发工具,因为这听起来像是SQL注入攻击正在等待发生。