Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MySQL und BindParam (https://www.delphipraxis.net/153558-mysql-und-bindparam.html)

Schorschi5566 8. Aug 2010 15:56

AW: MySQL und BindParam
 
Danke, jetzt klappt's.

Kann man den Typ String deinstallieren? :-D

Schorschi5566 9. Aug 2010 18:25

AW: MySQL und BindParam
 
Hallo Bernhard,

Zitat:

Zitat von Bernhard
Bei entsprechender Programmierung ist diese Syntax "schnurzpiepegal".


Die ?-Notation hat auf jeden Fall den Nachteil, dass man eine Variable im SQL-Statement nicht mehrfach referenzieren kann. Außer man übergibt sie auch mehrfach, was ziemlich blöd aussieht.

Außerdem liest es sich einfach schlecht, wenn nur Fragezeichen dort stehen, wo eigentlich Namen sein sollten.

Die Variablenausgabe mit Binding finde ich aber recht nett.

Delphi-Quellcode:
type
  TDataRec = class
    id : Integer;
    col1 : Integer;
    col2 : String;
    col3 : Integer;
    col4 : Double;
    col5 : String;
  end;

.
.
.

procedure TfrmBindParam.btnStdQueryClick(Sender: TObject);
var
  sqlres : TMysqlResult;
  bEx: Boolean;
  iVar: Integer;
begin
  // normale Query ohne Statement und Bind
  if sql.Connected then
  begin
    csgTest.Clear;
    iVar := 1000;
    sqlres := sql.query('SELECT * FROM test_table ' +
                        'WHERE col3 = ''' + IntToStr(iVar) + '''', True, bEx);
    if bEx then
    begin
      with sqlres do
      begin
        First;
        while not Eof do
        begin
          di.id := FieldByName('id').AsInteger;
          di.col1 := FieldByName('col1').AsInteger;
          di.col2 := FieldByName('col2').AsString;
          di.col3 := FieldByName('col3').AsInteger;
          di.col4 := FieldByName('col4').AsDateTime;
          di.col5 := FieldByName('col5').AsString;
          csgTest.Add(di);
          Next;
        end;
        Free;
      end;
    end;
  end;
end;

procedure TfrmBindParam.btnBindQueryClick(Sender: TObject);
var
  sqlRes : TMysqlResult;
  bEx: Boolean;
  iVar: Integer;
begin
  // Query mit Statement und Bind
  if sql.Connected then
  begin
    csgTest.Clear;
    iVar := 1000;
    // Query befüllt das Dateninterface di automatisch.
    sqlRes := sql.query('SELECT * FROM test_table ' +
                        'WHERE col3 = ?', [iVar], di, True, bEx);
    if bEx then
    begin
      with sqlres do
      begin
        First; // holt erste Zeile in di
        while not Eof do
        begin
          csgTest.Add(di);
          Next; // holt nächste Zeile in di
        end;
        csgTest.List.SaveToFile('test.txt');
        Free;
      end;
    end;
  end;
end;

Ich versuche gerade die :Name-Notation einzubauen, was mal wieder an "array of const" scheitert. Schon schade, dass man auf die Variablennamen nicht zugreifen kann, dann wäre es recht einfach.


Grüße,
Uwe


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz