Delphi ADO SQL语法错误
我在处理以下代码行时遇到语法错误。特别是在AQ_Query.Open上Delphi ADO SQL语法错误,sql,delphi,syntax,Sql,Delphi,Syntax,我在处理以下代码行时遇到语法错误。特别是在AQ_Query.Open上 procedure THauptfenster.Button1Click(Sender: TObject); var option: TZahlerArray; begin option := werZahlte; AQ_Query.Close; AQ_Query.SQL.Clear; AQ_Query.SQL.Add('USE wgwgwg;'); AQ_Query.SQL.Add('I
procedure THauptfenster.Button1Click(Sender: TObject);
var
option: TZahlerArray;
begin
option := werZahlte;
AQ_Query.Close;
AQ_Query.SQL.Clear;
AQ_Query.SQL.Add('USE wgwgwg;');
AQ_Query.SQL.Add('INSERT INTO abrechnung ');
AQ_Query.SQL.Add('(`datum`, `titel`, `betrag`, `waldemar`, `jonas`, `ali`, `ben`)');
AQ_Query.SQL.Add(' VALUES ');
AQ_Query.SQL.Add('(:datum, :essen, :betrag, :waldemar, :jonas, :ali, :ben);');
AQ_Query.Parameters.ParamByName('datum').Value := DateToStr(mcDatum.Date);
AQ_Query.Parameters.ParamByName('essen').Value := ledTitel.Text;
AQ_Query.Parameters.ParamByName('betrag').Value := ledPreis.Text;
AQ_Query.Parameters.ParamByName('waldemar').Value := option[0];
AQ_Query.Parameters.ParamByName('jonas').Value := option[1];
AQ_Query.Parameters.ParamByName('ali').Value := option[2];
AQ_Query.Parameters.ParamByName('ben').Value := option[3];
AQ_Query.Open;
end;
错误:
我使用的是MySQL Delphi 2010。在我看来,就像你在第三个
AQ\u Query.SQL上使用反勾号一样。添加行,当你需要使用普通单引号时。在我看来,就像你在第三个AQ\u Query.SQL上使用反勾号一样。添加行,当你需要使用普通单引号时
USE和INSERT是两种不同的SQL
命令李>
MySQL不支持这样做
称为“批次”
=>您必须逐个调用这些命令
USE和INSERT是两种不同的SQL
命令李>
MySQL不支持这样做
称为“批次”
=>您必须逐个调用这些命令使用sql脚本中的数据库
AQ_Query.SQL.Add('INSERT INTO wgwgwg.dbo.abrechnung ');
AQ_Query.SQL.Add('(`wgwgwg.dbo.abrechnung.datum`, `wgwgwg.dbo.abrechnungtitel`, `wgwgwg.dbo.abrechnungbetrag`, `wgwgwg.dbo.abrechnungwaldemar`, `wgwgwg.dbo.abrechnungjonas`, `wgwgwg.dbo.abrechnungali`, `wgwgwg.dbo.abrechnungben`)');
AQ_Query.SQL.Add(' VALUES ');
AQ_Query.SQL.Add('(:datum, :essen, :betrag, :waldemar, :jonas, :ali, :ben);');
AQ_Query.Parameters.ParamByName('datum').Value := DateToStr(mcDatum.Date);
AQ_Query.Parameters.ParamByName('essen').Value := ledTitel.Text;
AQ_Query.Parameters.ParamByName('betrag').Value := ledPreis.Text;
AQ_Query.Parameters.ParamByName('waldemar').Value := option[0];
AQ_Query.Parameters.ParamByName('jonas').Value := option[1];
AQ_Query.Parameters.ParamByName('ali').Value := option[2];
AQ_Query.Parameters.ParamByName('ben').Value := option[3];
您还可以建立到wgwg的新连接,并将您的AQ_查询引用到新连接,使用sql脚本中的数据库
AQ_Query.SQL.Add('INSERT INTO wgwgwg.dbo.abrechnung ');
AQ_Query.SQL.Add('(`wgwgwg.dbo.abrechnung.datum`, `wgwgwg.dbo.abrechnungtitel`, `wgwgwg.dbo.abrechnungbetrag`, `wgwgwg.dbo.abrechnungwaldemar`, `wgwgwg.dbo.abrechnungjonas`, `wgwgwg.dbo.abrechnungali`, `wgwgwg.dbo.abrechnungben`)');
AQ_Query.SQL.Add(' VALUES ');
AQ_Query.SQL.Add('(:datum, :essen, :betrag, :waldemar, :jonas, :ali, :ben);');
AQ_Query.Parameters.ParamByName('datum').Value := DateToStr(mcDatum.Date);
AQ_Query.Parameters.ParamByName('essen').Value := ledTitel.Text;
AQ_Query.Parameters.ParamByName('betrag').Value := ledPreis.Text;
AQ_Query.Parameters.ParamByName('waldemar').Value := option[0];
AQ_Query.Parameters.ParamByName('jonas').Value := option[1];
AQ_Query.Parameters.ParamByName('ali').Value := option[2];
AQ_Query.Parameters.ParamByName('ben').Value := option[3];
你也可以建立一个到WGWG的新连接,并将你的AQ_查询引用到新连接Yep,这就是错误消息所指向的那一行,我在那里没有看到任何其他内容……实际上,因为反勾中的项目显然是列名,根本不需要任何标点符号。你可以用方括号括住列名([datum]、[titel]、[betrag]……虽然不是必需的。错误消息指向INSERT语句,而不是列列表。(第2行是INSERT语句,第1行是USE语句)请看Dmitry的答案-我认为他是对的。我不认为您可以使用ADO查询对象来执行脚本,只执行单个语句。是的,这就是错误消息所指向的行,我在其中没有看到任何其他内容…实际上,由于backticks中的项显然是列名,因此不需要任何类型的点号完全不需要。可以用方括号括住列名。“([datum]、[titel]、[betrag]……尽管不是必需的。错误消息指向INSERT语句,而不是列列表。(第2行是INSERT语句,第1行是USE语句)。请看Dmitry的回答-我认为他是对的。我认为您不能使用ADO查询对象来执行脚本,只能执行一条语句。好的。我现在有两条不同的语句。不过,我需要调用AQ_query.ExecSql来插入。Open不起作用,因为它说:“AQ_查询不返回任何数据。”但是,它不会在DBGrid中更新。如何更新它?是的,对于返回结果的查询,您使用Open,否则使用ExecSQL。原始问题中的DBGrid功能在哪里?!好的。我现在有两个不同的语句。但是,我需要调用AQ_Query.ExecSQL来插入。Open不起作用,因为它说:“AQ_查询不返回任何数据。”但它不会在DBGrid中更新。如何更新它?是的,对于返回结果的查询,您使用Open,否则使用ExecSQL。原始问题中的DBGrid功能在哪里?!wgwgwg.dbo.abrethnung.datum中的dbo来自哪里?数据库所有者(dbo)dbo是具有执行数据库中所有活动的隐含权限的用户。使用数据库的sysadmin固定服务器角色的任何成员都将映射到每个数据库中名为dbo的特殊用户。此外,sysadmin固定服务器角色的任何成员创建的任何对象都自动属于dbo。请参阅:该dbo来自何处在数据库所有者(dbo)的wgwg.dbo.abrethnung.datum中dbo是具有执行数据库中所有活动的隐含权限的用户。使用数据库的sysadmin固定服务器角色的任何成员都将映射到每个数据库中名为dbo的特殊用户。此外,sysadmin固定服务器角色的任何成员创建的任何对象都自动属于dbo。请参阅: