Toon posts:

[C++] Insert query naar access

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer een waarde in mijn accesss database te zetten dmv een query.
Ik gebruik borland c++ builder 6 en ADO Connections

Dit is een van de vele codes waarmee ik bezig ben geweest, om een idee te krijgen van wat ik probeer:

C++:
1
2
3
4
bestellingen->toevoeg_bestel->Close();
bestellingen->toevoeg_bestel->SQL->Text = "INSERT INTO bestellingen2 ( test1 ) VALUES ('aantal1->Text');";
bestellingen->toevoeg_bestel->Active = true;
bestellingen->toevoeg_bestel->Open();


Ik hoop dat iemand mij kan helpen want ik ben al heel lang aan het zoeken naar een antwoord op mijn vraag:
Hoe voeg ik een waarde in in mijn access database met c++ vanuit een teditbox?

Alvast bedankt!

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Wat je nu probeert geeft natuurlijk geen goed resultaat. Je voegt nl de string 'aantal1->Text' in je DB. Als je de waarde van aantal1->Text in je DB wil stoppen, zul je de query even moeten opbouwen, dus iets in de richting van
code:
1
"INSERT INTO bestellingen2 ( test1 ) VALUES ('" + aantal1->Text + "');"

Dus een kwestie van een paar stringetjes aan elkaar knopen.

Verwijderd

Ik heb dit soort dingen veel gedaan.
Globale aanpak: gebruik STL streams, dat werkt het makkelijkst, zeker als je naast strings ook getallen in de DB moet zetten.
Je kunt bijvoorbeeld zoiets doen:
C++:
1
2
3
4
5
6
int i = 1;
string s = "Pietje";
stringstream insert;

//bouw query string
insert << "INSERT INTO Blaat(field1, field2)  VALUES (" << i << ", ' << s << "');";

Als je deze stream zo opgebouwd hebt, kun je insert.str() gebruiken om zijn string representatie terug te krijgen. Als je dus een of ander database object dinges hebt doe je dus:

C++:
1
database->Execute(insert.str());


In plaats van i en s moet jij dus jouw textfield contents gebruiken.

Zijdelings vraagje: Waarom maak je geen gebruik van DAO? Dat is de Access-specifieke API van Microsoft en maakt gebruik van de Jet engine. Dat geeft je op Windows de best mogelijke performance. Als je zeker weet dat je niet compatible hoeft zijn met andere databases en alleen voor Windows ontwikkelt, zou ik die kiezen.

  • xoror
  • Registratie: November 1999
  • Niet online
queries die geen date returnen moet je executeren met de methode ExecSQL();
In Ado heette hij wellicht iets anders. maar wel in die richting. (het was ExecuteSQL als ik me goed herinner)

Mitsubishi Warmtepomp Uitlezen / Besturen | Optimaliseren


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21:31
Verwijderd schreef op 29 June 2003 @ 13:53:
Zijdelings vraagje: Waarom maak je geen gebruik van DAO? Dat is de Access-specifieke API van Microsoft en maakt gebruik van de Jet engine.
ADO is de vervanger van DAO. Als je een ADO verbinding opent met de MSJET provider dan maakt ie gebruik van de Jet Engine.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

farlane schreef op 29 June 2003 @ 21:01:
[...]


ADO is de vervanger van DAO. Als je een ADO verbinding opent met de MSJET provider dan maakt ie gebruik van de Jet Engine.
Ja je kunt met ADO wel Jet als engine kiezen maar ben je dan toch niet beperkt in de API die je krijgt aangeboden?
Voor zover ik weet kun je met DAO allerlei gekkigheid uithalen die specifiek is voor Access, hetgeen met ADO weer niet kan...
Maarum, correct me if I'm wrong

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21:31
Je kunt met DAO meer dan met ADO, dat klopt. ( Alhoewel dat niet echt veel meer is )

Maar als je die functies nodig hebt ( comprimeren bv ) is het beter dat je naar een ander DBMS overstapt ( MSDE bijvoorbeeld ).

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1