2010-03-25 6 views
0

다음 코드 줄을 처리 할 때 구문 오류가 발생합니다. 특히 AQ_Query.Open;Delphi ADO SQL 구문 오류

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; 

오류 :

SQL Error

내가 MySQL을 델파이 2010

답변

5
  1. USE와 INSERT는 두 가지 다른 SQL 명령입니다.
  2. MySQL은 "Batch"라는 을 지원하지 않습니다.

는 => 당신은이 명령을 하나씩

+0

Ok. 지금은 두 가지 문이 있습니다. AQ_Query.ExecSql을 호출하여 삽입하십시오. "AQ_Query가 데이터를 반환하지 않습니다."라는 이유로 열기가 작동하지 않습니다. 그래도 DBGrid에서 업데이트되지 않습니다. 업데이트하는 방법 – Acron

+0

예, 열기를 사용합니다. 결과를 반환하는 쿼리의 경우에는 ExecSQL을 사용합니다. 원래 질문에 DBGrid 기능은 어디에 있습니까?!?! – Deltics

+0

;) Nvm. 데이터 세트에서 닫히고 사용되었습니다. 감사합니다. @ dmitry – Acron

1

을 사용하고 나에게 보이는 당신이 사용해야 할 때, 세 번째 AQ_Query.SQL.Add 라인에 역 따옴표를 사용하는 등의 보통 작은 따옴표.

+0

네에 AQ_Query를 참조하는 새 연결을 만들 수 있습니다, 즉 라인을에 오류 메시지가 포인트를 그리고 나는 거기에 아무것도 표시되지 않습니다 ... –

+0

사실, 백틱의 항목은 분명히 열 이름이므로 모든 구두점이 필요하지 않아야합니다. –

+0

열 이름을 대괄호로 묶을 수 있습니다. – skamradt

0

호출하는 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]; 

또한 wgwgwg 새로운 연결

+0

감사합니다. RRUZ, 점을 잊어 버렸습니다. – Ravaut123

+0

어디에서 dbo가 왔는지 wgwgwg.dbo.abrechnung.datum? – Acron

+1

데이터베이스 소유자 (dbo) dbo는 데이터베이스의 모든 작업을 수행 할 수있는 사용 권한이있는 사용자입니다. 데이터베이스를 사용하는 sysadmin 고정 서버 역할의 구성원은 dbo라는 각 데이터베이스 내의 특수 사용자에게 매핑됩니다. 또한 sysadmin 고정 서버 역할의 구성원이 만든 모든 개체는 자동으로 dbo에 속합니다. 참조 : http://msdn.microsoft.com/en-us/library/aa905208%28SQL.80%29.aspx – Ravaut123