09. februar 2005 - 22:41Der er
13 kommentarer og 1 løsning
Mysql Delphi
Det kan godt være det er mig der er dum! men jeg har da fundet ud af at kunne connecte til min MySql nu med nød og næppe! Jeg kan vitterlig ikke finde ud af hvilken komandoer man skal bruge! Jeg har arbejdet lidt inden for delphi og c++ og rigtig meget inden for PHP!
det jeg vil er at Connecte til en db, som jeg har gjordt! nu vil jeg hente en tabel (fd-cms-login) i denne tabel ligger der 1. id 2. user 3. pass dem vil jeg gerne have udprintet i 3 Tedits!
Så har du brugt dbExpress. Her findes en SQLConnection, som du nok har anvendt...?
Samme sted findes en SQLTable komponent. Hvis du dropper den på din form kan du se at den har en SQLConnection property. Nu vælger du din SQLConnection fra dropdown-menuen. Hvis du kan connecte korrekt, burde du nu kunne vælge din tabel fra TableName dropdown.
For at teste om du kan hente data, så drop en DataSource (Data Access flappen) og sæt DataSet til din SQLTable, og en DB Grid (Data Controls flappen) på din form. Griddens DataSource vælges fra dropdown menuen - og vupti....(best case senario!!)
du skulle vel ikke kunne lave et hurtigt eksempel? Jeg har meget nemmere ved selv at læse koden og forstå den end at skulle forstå beskrivelser af kode! Det ville være mega nice!
Faktisk ikke, for jeg har afinstalleret mySQL fra min computer fornylig. Men det er faktisk blot at putte de komponenter på formen og sætte de nævnte props. Prøv at ta' det step for step... ;)
I ovenstående dump er der to komponenter en TSQLConnection og en TSQLQuery. De er forbundet og kobler sig til en database ved navn "testdb" på en maskine der hedder "testpc" med login "root" til MySQL maskinen via password "xxxx".
TSQLQueryen har en SQL property hvor du kan indsætte en query og en anden property der hedder Params (ikke helt sikker om det er Param, Params eller Parameters, det må du selv tjekke) hvor du kan tilrette parametrene:
I SQL har jeg skrevet et script der henter antallet af data for en ansat (har to tabeller, en ansat og en loen hvor sidstnævnte indeholder lønudskrivningerne):
select a.ID, a.Navn, l.LoenDato, l.Loen from Ansatte a join Loen l on (l.ID = a.ID) where a.ID = :AnsatID order by l.LoenDato
I Params vil der være en AnsatID parameter som du bør sætte til - i dette tilfælde - en ftInteger.
I programmet, i en procedure, vil det se sådan ud (læser data ind i et TListView i Report-mode og med 4 kolonner):
procedure FindAnsatData(const aAnsatID : integer); begin TempQuery.ParamByName('AnsatID').AsInteger := aAnsatID; TempQuery.Open; AnsatDataListView.Items.BeginUpdate; try AnsatDataListView.Items.Clear; while not TempQuery.Eof do begin // (Se borisholt, jeg rykker ned på næste linie...) with AnsatDataListView.Items.Add do begin Caption := IntToStr(TempQuery.FieldByName('ID').AsInteger); SubItems.Add(TempQuery.FieldByName('Navn').AsString); SubItems.Add(DateTimeToStr(TempQuery.FieldByName('LoenDato').AsDateTime)); // Evt. bare .AsString SubItems.Add(FloatToStr(TempQuery.FieldByName('Loen').AsFloat)); end; TempQuery.Next; end; finally AnsatDataListView.Items.EndUpdate; TempQuery.Close; end; end;
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.