[VB.Net] access db: record toevoegen

Pagina: 1
Acties:

  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 13-11 10:12
Hallo,

Als onderdeel van mijn spelletje, zou ik graag de score toevoegen in een access database.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'BEGIN SCORE WEGSCHRIJVEN
                Dim verbindingsString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=scores.mdb;"
                Dim cnnScores As New OleDb.OleDbConnection(verbindingsString)
                Dim query As String = "INSERT INTO tblScores(Spelernaam) VALUES(frmStart.strSpelernaam)"
                Dim opdracht As New OleDb.OleDbCommand(query, cnnScores)

                Try
                    cnnScores.Open()
                    opdracht.ExecuteNonQuery()
                    opdracht.Dispose()
                Catch x As Exception
                    MessageBox.Show(x.Message, "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Finally
                    cnnScores.Close()
                    MessageBox.Show("Gegevens toegevoegd", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End Try
                'EINDE SCORE WEGSCHRIJVEN


Nu zie ik nergens een fout in bovenstaande code, maar wanneer ik ze uitvoer krijg ik volgende error:
"No value give for one or more given parameters"

frmStart.strSpelernaam bevat nochtans de naam van de speler.


Weet er iemand wat ik fout doe? Alvast bedankt!

  • MMUilwijk
  • Registratie: Oktober 2001
  • Laatst online: 17:48
Mijn MS Access kennis is wat roesting, maar veelal wijst dit op of een verkeerde kolomnaam, of een verkeerd datatype.

Volgens mij moet je in een "tekst" kolom in je VALUES deel ook quotes om je waarde neerzetten?!
En ga aub gebruik maken van geparametrizeerde queries :)

[ Voor 14% gewijzigd door MMUilwijk op 01-06-2008 11:45 ]

Everytime I suffer I become a better man because of it


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
DenDries schreef op zondag 01 juni 2008 @ 11:36:
"INSERT INTO tblScores(Spelernaam) VALUES(frmStart.strSpelernaam)"
DenDries schreef op zondag 01 juni 2008 @ 11:36:
Weet er iemand wat ik fout doe? Alvast bedankt!
Heb je de query zoals 'ie uitgevoerd wordt al eens afgedrukt? Je kunt niet zomaar in je string een variabele zetten en hopen dat VB.net (of eender welke taal) dan snapt dat die vervangen moet worden door de waarde ervan. Je zult moeten escapen, maar om dan meteen slechte gewoontes te voorkomen kun je je denk ik beter even inlezen in Over het gebruik van Parametrized Queries. Ik zie trouwens ook niet waarom je alleen een naam zou inserten en niet meteen de score erbij.

Dan vraag ik me overigens ook nog even het volgende af: is je applicatie (primair) een spelletje? Waarom gebruik je dan een (Access) DB om scores op te slaan en niet gewoon een los bestandje?

Al met al een beetje basic. Een tutorialletje of 2 kan geen kwaad denk ik ;)

[ Voor 31% gewijzigd door RobIII op 01-06-2008 11:46 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 13-11 10:12
RobIII schreef op zondag 01 juni 2008 @ 11:43:
[...]


[...]

Heb je de query zoals 'ie uitgevoerd wordt al eens afgedrukt? Je kunt niet zomaar in je string een variabele zetten en hopen dat VB.net (of eender welke taal) dan snapt dat die vervangen moet worden door de waarde ervan. Je zult moeten escapen, maar om dan meteen slechte gewoontes te voorkomen kun je je denk ik beter even inlezen in Over het gebruik van Parametrized Queries. Ik zie trouwens ook niet waarom je alleen een naam zou inserten en niet meteen de score erbij.

Dan vraag ik me overigens ook nog even het volgende af: is je applicatie (primair) een spelletje? Waarom gebruik je dan een (Access) DB om scores op te slaan en niet gewoon een los bestandje?

Al met al een beetje basic. Een tutorialletje of 2 kan geen kwaad denk ik ;)
Het is een project voor school en we moeten verplicht gebruik maken van een access database om de gegevens bij te houden.

Allesinds bedankt, ik weet min of meer hoe ik hier in VS2003 gebruik kan van maken, maar in 2005 lukt het me nog niet echt.
Ik ga inderdaad eens wat tutorials lezen, 't is nodig :D

  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
DenDries schreef op zondag 01 juni 2008 @ 11:36:
code:
1
Dim query As String = "INSERT INTO tblScores(Spelernaam) VALUES(frmStart.strSpelernaam)"
Daar zou ik het volgende van maken, maar geen idee of dat in VB.Net ook zo moet :)
Visual Basic:
1
Dim query As String = "INSERT INTO tblScores(Spelernaam) VALUES('" & frmStart.strSpelernaam & "')"

/edit zie bovenstaande reacties...

[ Voor 12% gewijzigd door SierdW op 01-06-2008 13:50 ]


  • ATS
  • Registratie: September 2001
  • Laatst online: 29-10 18:37

ATS

AU! Dat zou ik toch niet doen, SierdW! :X
Dit soort dingen zijn een recept voor SQL injection.
Queries bouw je bij voorkeur op als parameter queries, niet als strings. Dat heeft als voordeel dat dingen als correct escapen en vragen van "wat zet je nu ook alweer om een date field heen" automatisch opgelost worden.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Een beetje offtopic: maar moet je behalve de spelersnaam ook niet de score opslaan in tblScores?

If it isn't broken, fix it until it is..


  • DenDries
  • Registratie: Januari 2006
  • Laatst online: 13-11 10:12
Niemand_Anders schreef op maandag 02 juni 2008 @ 13:41:
Een beetje offtopic: maar moet je behalve de spelersnaam ook niet de score opslaan in tblScores?
Ja, 't was gewoon om eens te proberen met een tabel of dat lukte :)

Ik heb geprobeerd en kwam op dezelfde methode als SierdW uit, bedankt voor de hulp allemaal :)

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Tot er een speler komt die Jeanne d'Arc heet ... toen werkte het niet meer.

Lees RobIII in "\[VB.Net] access db: record toevoegen" nog eens ...

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:26
ja, of een speler die melp';delete from tblscores;-- heet ...

https://fgheysels.github.io/


  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
ATS schreef op maandag 02 juni 2008 @ 13:36:
AU! Dat zou ik toch niet doen, SierdW! :X
Dit soort dingen zijn een recept voor SQL injection.
Queries bouw je bij voorkeur op als parameter queries, niet als strings. Dat heeft als voordeel dat dingen als correct escapen en vragen van "wat zet je nu ook alweer om een date field heen" automatisch opgelost worden.
Jaja, daar ben ik me van bewust, wat ik echter geef is hoe de query van TS wel zou werken. ;)

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

whoami schreef op maandag 02 juni 2008 @ 17:25:
ja, of een speler die melp';delete from tblscores;-- heet ...
Little Bobby Tables?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
offtopic:
:D

[ Voor 5% gewijzigd door SierdW op 03-06-2008 12:42 ]

Pagina: 1