Delphi-PRAXiS
Seite 26 von 36   « Erste     16242526 2728     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi MySQL ohne Komponenten (https://www.delphipraxis.net/6543-mysql-ohne-komponenten.html)

DeddyH 25. Jan 2008 17:58

Re: MySQL ohne Komponenten
 
So, das hat super funktioniert (ich nutze eine Listview zur Anzeige mit Namen lv1, vsReport mit 6 Spalten):
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var Con: PMYSQL;
    host, user, pass, db: PChar;
    Row: PMySQL_Row;
    Res: PMYSQL_RES;
    query: string;
    i,j: integer;
    Item: TListItem;
begin
  host := 'localhost';
  user := 'root';
  pass := '';
  db  := 'dptest';

  Con := mysql_init(nil);
  if Assigned(Con) then
    try
      if Assigned(mysql_real_connect(Con, host, user, pass, db, 3306, nil, 0)) then
        begin
          query := 'SHOW FIELDS FROM blubb';
          mysql_real_query(Con,PChar(query), Length(query));
          Res := mysql_store_result(Con);
          if Assigned(Res) then
            for i := 0 to mysql_num_rows(Res) - 1 do
              begin
                Row := mysql_fetch_row(Res);
                Item := lv1.Items.Add;
                Item.Caption := Row[0];
                for j := 1 to mysql_num_fields(Res) - 1 do
                  Item.SubItems.Add(Row[j]);
              end;
        end
      else
        ShowMessage(mysql_error(Con));
    finally
      mysql_close(Con);
    end;
end;

Mackhack 27. Jan 2008 03:25

Re: MySQL ohne Komponenten
 
Wo gibt es denn die aktuellen MySQL pas files und dlls die benoetigt werden?

DeddyH 27. Jan 2008 11:31

Re: MySQL ohne Komponenten
 
Die DLLs liefert MySQL selbst mit (denke ich zumindest, ich habe sonst keine installiert) und die *.pas bekommst Du hier.

pemue 31. Jan 2008 11:06

Re: MySQL ohne Komponenten
 
Habe mal noch eine Frage, speziell zum Typ 'ENUM'
und zwar wenn ich ein Auswahlfeld in die Tabelle machen will, schicke ich diese Query an den MySQL
Delphi-Quellcode:
query := 'CREATE TABLE Auftrag (ID INT NOT NULL,Auftragsnummer INT, Kundennummer INT NOT NULL, BaustelleAnschrift TEXT, Rohranschlussmaterial TEXT, WinkelangabeInGon ENUM(''grad'', ''gon'') DEFAULT grad, Gefälleangabe ENUM(''%'', ''Promille'', ''1:'') DEFAULT %, CONSTRAINT FK_KN FOREIGN KEY FK_KN (Kundennummer) REFERENCES kunde (ID))';
Aber der Server nimmt diese Query nicht an, ich weis das es an der Text Formatierung des ENUM liegt, und evtl auch des Default wertes.
Ich habe schon ein wenig rumprobiert, bekomme es allerdings nicht hin.
Wie müsste ich den String Formatieren das er vom MySQL richtig verarbeitet wird?

Gruß
Pemue

[EDIT:]
Noch eine Frage, kann man einem integer-Feld vorgeben welche Länge es haben MUSS (also 7 Ziffern) ???

DeddyH 31. Jan 2008 12:01

Re: MySQL ohne Komponenten
 
'%' ist eine Wildcard, wir sich also nicht als ENUM-Element verwenden lassen (oder ich kenne den entsprechenden Trick nicht), und was meinst Du mit der Anzahl der Stellen? Ob eine Zahl 7-stellig ausgegeben wird, ist IMHO eine Frage der Ausgabeformatierung.

[edit] Ansonsten schau mal, ob ZeroFill Dir weiterhilft (bin aus der Beschreibung nicht ganz schlau geworden) [/edit]

pemue 31. Jan 2008 13:35

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von DeddyH
'%' ist eine Wildcard, wir sich also nicht als ENUM-Element verwenden lassen (oder ich kenne den entsprechenden Trick nicht), und was meinst Du mit der Anzahl der Stellen? Ob eine Zahl 7-stellig ausgegeben wird, ist IMHO eine Frage der Ausgabeformatierung.

[edit] Ansonsten schau mal, ob ZeroFill Dir weiterhilft (bin aus der Beschreibung nicht ganz schlau geworden) [/edit]

Ich meine das mit der 7-stelligen Zahl so:
Eine Kundennummer ist z.B. immer 7 Stellig, also soll durch das Feld erzwungen werden das dort nur 7Stellig-vor-dem-Komma-Zahlen gültig sind!

DeddyH 31. Jan 2008 13:54

Re: MySQL ohne Komponenten
 
Versuch es mal mit Constraints.

pemue 1. Feb 2008 07:33

Re: MySQL ohne Komponenten
 
Danke DeddyH das hat funktioniert...
nun habe ich noch eine frage, ich will eine Combobox mit den vorhandenen tabellen einer Datenbank füllen. zu Testzwecken wollt ich die erstmal in ein Memo schreiben.
Mein code schaut so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
    _myRes: PMYSQL_RES;
begin
query := 'SHOW TABLES FROM apitest';
_myRes:= mysql_real_query(_myCon,Pchar(query), Length(query));
Memo1.Text := _myRES;
end;
allerdings schimpft er mich schon vor dem testen das _myRes kein Integer ist, aber ich will ja auch nen string rausbekommen, bzw mehrere.
Wie also geh ich mit dieser query um? also wie fange ich sie ab und komme dann auf meine Tabellennamen?
das
Delphi-Quellcode:
_myRES: PMYSQL_RES
habe ich so deklariert wiel ich dachte das ist dann richtig.
Sorry bin ein ziemlicher anfänger, aber ich hoffe mir kann doch jemand helfen.
Vielen Dank schonmal für eure Hilfe!

Gruß
Pemue

DeddyH 1. Feb 2008 07:57

Re: MySQL ohne Komponenten
 
Schau Dir nochmal Zeile 23 aus #251 an:
Delphi-Quellcode:
Res := mysql_store_result(Con);
Ich hoffe, das ist nun klarer geworden ;)

pemue 1. Feb 2008 08:47

Re: MySQL ohne Komponenten
 
wo finde ich diese Zeile? in der mysql.pas? dort habe ich sie leider nicht finden können
[edit:] habe es gefunden, aber ich bekomme für _myRes (von PMYSQL_RES) nur '$BE2428' zurück. und es nützt auch nichts wenn ich das dann als string caste


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.
Seite 26 von 36   « Erste     16242526 2728     Letzte »    

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