[Delphi + MySQL] Queryfout.

Pagina: 1
Acties:

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
Ik heb een ander topic doorgelezen wat hier ook helemaal over ging. Hieronder nog een quote:
Op donderdag 13 december 2001 11:51 schreef klaasbram het volgende:

[..]

Ik denk dat je delphi code zo moet:
code:
1
2
3
4
5
Naam := NaamEdt.Text ;
Nummer_dames := NummerEdt.Text ;
Land := LandEdt.Text ;
Query := 'DELETE FROM Dames Nummer_dames = ''' + Nummer_dames +
''' AND Naam = ''' + Naam + ''' AND Land = ''' + Land + '''';

drie singel quotes ''' zorgt er voor dat de tekenreeks wordt geopend/ gesloten met daarvoor/ achter ' (2x '' ziet delphi als 1 ') de laaste 4 '''' doet: open tekenreeks plaat 1 ' (de 2e en 3e ') en sluit de tekenreeks weer af.

Ik heb dit alles niet uitgeprobeerd maar ik weet dat het quotes verhaal best lastig is.
Ik heb de bovenstaande code geprobeerd, en heb nu als volgt m'n query:

qrMain.SQL.add('SELECT * FROM csleden WHERE nick = ''' + ComboBox1.Text +'''');

Het lastige alleen is de usernames die in ComboBox1 staan zijn vreemd; hieronder een paar:

[ToD.Cheater.eu]
[ToD.Letan.eu]
[ToD.FireGhost.eu]

Geven de [ en ] geen fouten?

Ik krijg dus een foutmelding in m'n MySQL query.
Hoe moet ik het nou oplossen?

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
hmm. hier stond iets stoms. EDITED dus

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

* drm is geen delphi crack maar

is het niet handig om ff op een of andere manier de query die je doet naar je console te printen, om 'm te debuggen :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
I have no idea where you are talking about, maar zeg maar iets anders

Verwijderd

Wat hij bedoeld is dat je ipv.
code:
1
qrMain.SQL.add('SELECT * FROM csleden WHERE nick = ''' + ComboBox1.Text +'''');

even:
code:
1
showmessage('SELECT * FROM csleden WHERE nick = ''' + ComboBox1.Text +'''');

doet, zodat je kunt zien hoe de uiteindelijke query eruit ziet.

Welke error krijg je? Die [] zouden in principe geen problemen mogen geven. Volgens mij heb je gewoon teveel haakjes staan oid.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Cheater:
I have no idea where you are talking about, maar zeg maar iets anders
no problem. Bij deze |:(

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Waarom werk je niet met parameters? Da's veel netter in uw code ook. (Duidelijker leesbaar en daardoor minder 'prone to error'):
code:
1
2
3
SELECT *
FROM table
WHERE table.veld = :paramveld

en dan in uw code:
code:
1
Query1.ParamByName('paramveld').AsString := 'blaat';

En als je niet met parameters wilt werken, heb je nog altijd zoiets als QuotedStr();

https://fgheysels.github.io/


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
Ik werk met Zeos componenten en weet niet hoe die daarop reageren. En weet ook niet of die het aankunnen.

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
Op vrijdag 22 februari 2002 16:40 schreef whoami het volgende:
Waarom werk je niet met parameters? Da's veel netter in uw code ook. (Duidelijker leesbaar en daardoor minder 'prone to error'):
code:
1
2
3
SELECT *
FROM table
WHERE table.veld = :paramveld

en dan in uw code:
code:
1
Query1.ParamByName('paramveld').AsString := 'blaat';

En als je niet met parameters wilt werken, heb je nog altijd zoiets als QuotedStr();
Hiervan snap ik dus niets

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
code:
1
showmessage('SELECT * FROM csleden WHERE nick = ''' + ComboBox1.Text +'''');

Welke error krijg je? Die [] zouden in principe geen problemen mogen geven. Volgens mij heb je gewoon teveel haakjes staan oid.
Ik krijg geen error hier. De message die ik tezien krijg lijkt me correct.


SELECT * FROM csleden WHERE nick = '[ToD.FireGhost.eu]'


Wat gaat er nou fout , want ik weet het niet meer

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Op zaterdag 23 februari 2002 13:07 schreef Cheater het volgende:

[..]

Hiervan snap ik dus niets
Je schrijft gewoon je query zoals je die hebben wil.
code:
1
WHERE table.veld = :p_filter

Bovenstaande code geeft aan dat je wilt filteren op table.veld. Die :p_filter is een parameter. Die kan je at-runtime een waarde geven door
code:
1
Query.ParamByName('p_filter').AsString := Edit1.Text;

te schrijven.

Dit is equivalent moest je in uw Delphi code het volgende schrijven:
code:
1
Query1.SQL.Text := 'SELECT * FROM table where table.veld := ' + QuotedStr(Edit1.Text);

https://fgheysels.github.io/


Verwijderd

/me is fucking dom en had niet goed gelezen

  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
Op zaterdag 23 februari 2002 15:51 schreef whoami het volgende:

Je schrijft gewoon je query zoals je die hebben wil.
code:
1
WHERE table.veld = :p_filter

Bovenstaande code geeft aan dat je wilt filteren op table.veld. Die :p_filter is een parameter. Die kan je at-runtime een waarde geven door
code:
1
Query.ParamByName('p_filter').AsString := Edit1.Text;

te schrijven.
Dit stuk begrijp ik nog niet.
Het laatste stuk (wat niet bij de quote zit) snap ik wel
Als ik direct:
WHERE table.veld = :p_filter
in m'n code zet, levert dit uiteraard een fout op. Dus misschien dat u nader wilt uitleggen hoe ik dit wel moet toevoegen. (in de vars misschien? of in de const?)

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:51
Dat WHERE - stuk is een stuk van uw SQL-query, dus dat zet je in uw SQL property van uw TQuery. (Je kan dat doen door de Object Inspector of door het volgende in uw code te zetten:)
code:
1
Query1.SQL.Text := 'SELECT * FROM table WHERE table.veld = :search';

Hiermee geef je dus gewoon aan dat je wilt filteren op 'table.veld', maar dat je nog niet weet met welke waarde je wilt filteren.
Om de waarde dan te bepalen doe je bv. het volgende in uw code:
code:
1
Query1.ParamByName('search').AsString := 'test'

Uw query zal dan aangepast worden als volgt:
code:
1
SELECT * FROM Table WHERE table.veld = 'test'

https://fgheysels.github.io/


  • Cheater
  • Registratie: Januari 2001
  • Laatst online: 00:51
Potverdikkeme. Het werkt ook nog. dat had ik niet gedacht.
TNX
Pagina: 1