Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [MySQL] Wie bekomme ich '\' ins Record? (https://www.delphipraxis.net/29517-%5Bmysql%5D-wie-bekomme-ich-%5C-ins-record.html)

Akut-Programming 10. Sep 2004 09:39


[MySQL] Wie bekomme ich '\' ins Record?
 
Hi,

folgendes Problem. Ich will Pfadangaben in einer MySQL Tabelle speichern. Als ich einfach nur den übergebenen String eingefügt hatte, waren keine '\' mehr vorhanden. Da dacht ich mir, das er das beim einfügen falsch übergeben bekommen hat bzw. die '\' wegschneidet. Also habe ich mit StringReplace gearbeitet um die '\' durch '\\' zu ersetzen. Aber dann konnt ich sehen, das es da auch nich ging :gruebel: - Delphi hat damit also nichts zu tun, sondern handelt MySQL das irgendwie. (Glaube ich :stupid:) - Kann mir jemand vielleicht sagen, wie ich die '\' meines übergebenen Pfades nun doch da rein bekomme. - Ich will die Dateien aus meiner Anwendung aus starten lassen und dazu brauch ich die komplette Pfadangabe.

Gruß,

Sharky 10. Sep 2004 09:45

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Hai Akut,

ich kann das so nicht nachvollziehen. Wie speicherst Du die Pfade denn?

Akut-Programming 10. Sep 2004 10:03

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
hier mal mein Code fürs einfügen..
Delphi-Quellcode:
ChangedFilepath:=StringReplace(frmMain.OpenDialog1.FileName,'\\','\',[rfReplaceAll, rfIgnoreCase]);

cmdInsertFile.CommandText:='insert into files_tbl values('''+SelectetName+''', '''+frmFiletitel.edFiletitel.Text+''', '''+ChangedFilepath+''')';
[EDIT]Wenn ich die Pfadangaben nun wieder auslese bzw. sie mir in der DB anschaue, steht da z.B. nur 'C:TempThisFile.exe[/EDIT]

Sharky 10. Sep 2004 10:07

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Wie greifst Du denn auf den mySQL zu?

Akut-Programming 10. Sep 2004 10:09

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Hai Sharky,

über ODBC, wenn du das meinst.. und das ist der Code für die Abfrage der Dateien aus der DB..
Delphi-Quellcode:
procedure TfrmMain.LoadFileList(Anwendung: String);
var
   i: integer;
   ListItem: TListItem;
begin
     lvFiles.Items.Clear;
     SelectetName:=Anwendung;

     dstGetFilelist.Active:=false;
     dstGetFilelist.CommandText:='select * from files_tbl where projekt ='''+Anwendung+'''';
     dstGetFilelist.Active:=true;
     dstGetFilelist.first;

     for i:=0 to dstGetFilelist.RecordCount-1
     do begin
        ListItem:=lvFiles.Items.Add;
        ListItem.Caption:=dstGetFilelist.Fields.Fields[1].AsString;
        ListItem.SubItems.Add(StringReplace(dstGetFilelist.Fields.Fields[2].AsString,'\\','\',[rfReplaceAll, rfIgnoreCase]));
        dstGetFilelist.Next;
     end;
end;

Sharky 10. Sep 2004 10:13

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Ich verwende für mySQL die Zeos-Komponenten. Wenn ich mit diesem Code arbeite werden alle Pfade so in die Tabelle geschrieben wie ich es möchte:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (OpenDialog1.Execute) then
  begin
    with ZQuery1 do
    begin
      Close;
      SQL.Text := 'INSERT INTO meintest VALUES (null,:pfad)';
      ParamCheck := True;
      ParamByName ('pfad').AsString := OpenDialog1.FileName;
      ExecSql;
    end;
  end;
end;

Akut-Programming 10. Sep 2004 10:18

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Ich nutze die ADO Komponenten.. habs jetzt mal versucht, den Code darauf umzustellen, da bekomme ich aber die Meldung, das ParamByName ein undefinierter Bezeichner ist.
Delphi-Quellcode:
cmdInsertFile.CommandText:='insert into files_tbl values('''+SelectetProject+''', '''+frmFiletitel.edFiletitel.Text+''', :pfad)';
cmdInsertFile.ParamCheck:=true;
cmdInsertFile.ParamByName('pfad').AsString := OpenDialog1.FileName;
cmdInsertFile.Execute;
[EDIT]Habs jetzt auch mal mitn ADO-Query versucht, da kommt das gleiche raus.:cry:[/EDIT]

Sharky 10. Sep 2004 10:21

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Zitat:

Zitat von Akut-Programming
Ich nutze die ADO Komponenten.. ...

Bei den ADOs ist der Syntax etwas anders:
Delphi-Quellcode:
  ADOCommand1.Parameters.ParamByName('pfad').DataType := ftString; // Typ zuweisen (string)
  ADOCommand1.Parameters.ParamByName('pfad').value := OpenDialog1.FileName; // Wert zuweisen
Geht mit ADOCommand und ADOQuery.

Akut-Programming 10. Sep 2004 10:26

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
bei
Delphi-Quellcode:
cmdInsertFile.Parameters.ParamByName('pfad').DataType := ftString; // Typ zuweisen (string)
bekomme ich die Meldung "undefinierter Bezeichner ftString" :freak:

Sharky 10. Sep 2004 10:29

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Ist die Unit DB eingebunden?

Akut-Programming 10. Sep 2004 10:35

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
:stupid: Dank dir - jetzt gehts!! :thumb:

Sharky 10. Sep 2004 10:42

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Zitat:

Zitat von Akut-Programming
:stupid: Dank dir - jetzt gehts!! :thumb:

*Freu*

Ich empfehle Dir aber grundsätzlich mit Parametern zu arbeiten. Das vermeidet Fehlerquellen und macht den Code übersichtlicher:
Delphi-Quellcode:
begin
  with cmdInsertFile do
  begin
    CommandText:='insert into files_tbl ' + #10 
      + 'values(:SelectetProject,:titel,:pfad)';
    ParamCheck:=true;
    with Parameters do
    begin
      ParamByName('SelectetProject').DataType := ftString;
      ParamByName('SelectetProject').value := SelectedProject;
      ParamByName('titel').DataType := ftString;
      ParamByName('titel').value := frmFiletitel.edFiletitel.Text;
      ParamByName('pfad').DataType := ftString;
      ParamByName('pfad').value := OpenDialog1.FileName;
    end;
    Execute;
  end;
end;

Akut-Programming 10. Sep 2004 11:00

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Den tip werd ich mir zu Hertzen nehmen. Scheint echt fehler zu vermeiden... da kann ich auch gleich mal in n paar älteren Anwendungen gucken die durch sowas nie wirklich fertig geworden sind. :coder2:

Sharky 10. Sep 2004 11:02

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Zitat:

Zitat von Akut-Programming
Den tip werd ich mir zu Hertzen nehmen....

Den grössten Vorteil wirst Du bemerken wenn Du ein Datum in eine Tabelle schreiben musst. Wenn Du mit Parametern arbeitest musst Du nicht überlegen in welchem Format die Datenbank das Datum möchte. Einfach den richtigen Datentyp wählen und den Rest übernimmt die Schnittstelle für dich!

Akut-Programming 10. Sep 2004 11:55

Re: [MySQL] Wie bekomme ich '\' ins Record?
 
Zitat:

Zitat von Sharky
Den grössten Vorteil wirst Du bemerken wenn Du ein Datum in eine Tabelle schreiben musst. ...

Das ist mir eigentlich auch wichtig. Wie oft ich schon mit Fehlermeldungen beschmissen wurde, weil das Datum nicht im verlangten Format übergeben wurde. :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr.

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