13. januar 2008 - 11:03Der er
7 kommentarer og 1 løsning
adoquery problem
Hej,
Jeg har følgende kode der bruger adoquery. Jeg har tested
select count(*) As NumberOfRecords from Results where TargetFile_IdtargetFile=1
Direkte med MySQL og det virker fint. Problemet er at når jeg køre nedenstående kode fra delphi så modtager MySQL serveren ikke ovenstående MySQL kommando men istedet for:
select * from result
Som naturligvis tager lang tid at køre - mystisk?
q1.Close; q1.SQL.Clear; q1.SQL.Add('select count(*) As NumberOfRecords from Results where TargetFile_IdtargetFile='+inttostr(spinedit9.value)); q1.Active:=true; q1.Open; q1.First; edit8.Text:=q1.FieldByName('NumberOfRecords').AsString; q1.Close;
Du kan lave din select en hel del pænere ved at skippe direkte formatering af scriptet. Nedenstående virker hos mig.
q1.SQL.Clear; q1.SQL.Add('select count(*) as TargetFilCount'); q1.SQL.Add(' from results'); q1.SQL.Add(' where (targetfile_idtargetfile = :targetfile_idtargetfile)');
with q1.Parameters.ParamByName('targetfile_idtargetfile') do begin DataType := ftInteger; Value := SpinEdit9.Value; end;
q1.Open try result := q1.FieldByName('TargetFilCount').AsInteger; finally q1.Close; end;
Nu er ovenstående ikke særlig stringent og pænt, men her bliver det et helt skoleeksempel (:-):
function <Class>.GetTargetFileCount(const aValue: integer): integer; var Query: TADOQuery; begin Query := TADOQuery.Create(nil); try Query.ConnectionString := '...';
Query.SQL.Clear; Query.SQL.Add('select count(*) as TargetFilCount'); Query.SQL.Add(' from results'); Query.SQL.Add(' where (targetfile_idtargetfile = :targetfile_idtargetfile)');
with Query.Parameters.ParamByName('targetfile_idtargetfile') do begin DataType := ftInteger; Value := aValue; end;
Query.Open result := Query.FieldByName('TargetFilCount').AsInteger; finally Query.Free; end; end;
Plejer i øvrigt ikke at sætte connectionstengen direkte, men har et TDataModule hvori jeg har en CreateQuery funktion som opretter og sætter ConnectionString:
TDM.CreateQuery: TADOQuery; begin result := TADOQuery.Create(nil); result.ConnectionString := '...'; end;
Mange tak for komentar fra både hrc og martinlind. FirebirdSQL ser ud til at værre et godt alternative til MySQL.
Er det let at konvertere databaser fra MySQL til Firebird?
Er der nogle gode og frie programmer til database design for Firebird databaser?
Hvordan er hastigheden på data transfer samenlignet med MySQL.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.