Toon posts:

[Delphi & SQL] integers in je query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb dus ff een progje gefixed waarin ik kan zetten welke mp3'z ik heb en op welke cd ze staan en zo, maar nu heb ik een probleempje met de tabel.
Ik moet namelijk twee integers invoeren (cdnr en nummer om te indexen), maar hoe moet ik dat in delphi doen.
Dit is wat ik tot nu toe heb bedacht.
code:
1
2
3
4
5
6
7
deel1 := 'Insert into alles (cdnr, nummer, artiest, songnaam, kwaliteit, genre, commentaar) Values( cdnr + , + nummer + '',''' + art + ''',''' + songnm + ''',''' + kwal + ''',''' + gen + ''',''' + comment + ''')';
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.add(deel1);
  Query1.ExecSQL;
  Table1.Active:=False;
  Table1.Active:=True;

Dit had ik nog over van een schaatscase die ik vorig jaar had gemaakt op school, maar daar vulden we geloof ik alleen maar strings in en dus geen integers.
Hoe moet ik dat nu doen.
Het gaat dus om de variablen: cdnr en nummer.
Ik dacht dus: ik haal die apostrofs d'r vandaan, dan doet ie het vast wel.
Maar dat wou dus niet (waarschijnlijk omdat deel1 een string is :(
Oh ja ik heb niet echt veel zin om m'n tabel te veranderen, dus ik hoop op een andere oplossing

  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 11-09 10:38

Killemov

Ik zoek nog een mooi icooi =)

Als het goed is maakt het niet uit of je ze als string of als integer probeert in te voeren. Die casts zouden automatisch moeten verlopen. Ohwja, iets wat ook wel leuk is om te proberen: prepared statements.

Hey ... maar dan heb je ook wat!


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Parameters gebruiken!!!
'Insert into alles (cdnr, nummer, artiest) Values(:cdnr, :nummer, :artiest)'

en dan:
ParamByName('cdnr').AsInteger := 198
ParamByName('nummer').AsInteger := 134
ParamByName('artiest').AsString := 'Sjef Hoelenpapers'

BIJVOORBEELD! :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:57
Op woensdag 13 februari 2002 20:37 schreef jelmervos het volgende:
Parameters gebruiken!!!
'Insert into alles (cdnr, nummer, artiest) Values(:cdnr, :nummer, :artiest)'

en dan:
ParamByName('cdnr').AsInteger := 198
ParamByName('nummer').AsInteger := 134
ParamByName('artiest').AsString := 'Sjef Hoelenpapers'

BIJVOORBEELD! :)
Idd. Of anders met IntToStr()

https://fgheysels.github.io/


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:40

Creepy

Tactical Espionage Splatterer

of minder ''''s gebruiken bij een integer
code:
1
2
3
4
5
sql.add('select * from blaat where string="'+string+'"');

of

sql.add('select * from blaat where integer='+inttostr(integer));

Maar die paramters gebruiken is meestal een stuk leesbaarder.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Helemaal als de getallen ook komma's e.d. kunnen bevatten is paramteres makkelijker. Ook voor data e.d. Die kunnen per PC een ander formaat hebben namelijk.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

De oplossing met de variabelen (:getal) is een van de beste oplossingen. Maar, ik heb wel eens gehoord dat dit een beetje buggie is en dat delphi de variabelen nog wel eens door elkaar mixt, heb er zelf nog niet echt problemen mee gehad, maar toch...

Als de query zelf variabel is doe ik vaak dit:
code:
1
TQuery.SQL.Add( Format('INSERT INTO mp3 VALUES(%d, %d, %s), ['naam', 12, 12]) );

de waarden tussen [] kun je vervangen door variabelen.

www.fendt.com | Nikon D7100 | PS5


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 16:08

Delphi32

Heading for the gates of Eden

Op donderdag 14 februari 2002 12:36 schreef FendtVario het volgende:
De oplossing met de variabelen (:getal) is een van de beste oplossingen. Maar, ik heb wel eens gehoord dat dit een beetje buggie is en dat delphi de variabelen nog wel eens door elkaar mixt, heb er zelf nog niet echt problemen mee gehad, maar toch...
Ik gebruik het al jaren, zowel designtime als runtime aangemaakte queries met parameters en ik heb er nog nooit 1 probleem mee gehad... Dus ik ben benieuwd waar jij vandaan haalt dat Delphi er wel eens problemen mee heeft :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:57
'k heb ook nog nooit problemen gehad met parameters in queries en ParamByName.

https://fgheysels.github.io/


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Ik doe eigenlijk altijd

Table.AppendRecord([Value1,Value2,Value3,...]);

De values mogen gewoon van elk type zijn, als 't maar overeenkomt met de database.

Siditamentis astuentis pactum.


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:57
Op donderdag 14 februari 2002 14:32 schreef Varienaja het volgende:
Ik doe eigenlijk altijd

Table.AppendRecord([Value1,Value2,Value3,...]);

De values mogen gewoon van elk type zijn, als 't maar overeenkomt met de database.
Bwah. TTable componenten gebruiken ipv TQuery.
TQuery componenten zijn toch veel beter dan TTable, en als je een beetje van een database-app wilt hebben, kan je toch maar beter gebruik maken van SQL om met de databank te communiceren.

https://fgheysels.github.io/

Pagina: 1