Archief - hulp nodig bij SQL

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

mXXX

Legacy Member
Ik zit ene beetje vast om verder te programmeren... Ik moet een radio button (man of vrouw) in mijn DB krijgen maar ik weet niet hoe dit werkt...
kan iemand mij opweg helpen aub?
2a0gk5i.png

connectie.Open()
SQLcommand.Connection = connectie
SQLcommand.CommandText = "INSERT INTO tbl_Leerling (Naam,Voornaam,Klas,Geslacht,Geboortedatum,GSM,Email) VALUES('" & txtNaam.Text & "','" & txtVoornaam.Text & "','" & cboKlas.Text & "', '" & "RADIOBUTTON" & "' ,'" & txtGeboortedatum.Text & "','" & txtGSM.Text & "','" & txtEmail.Text & "' )"
SQLcommand.ExecuteNonQuery()

hetzelfde probleem heb ik met een checkbox....

alvast bedankt voor de reacties!

Tyfius

Legacy Member
Achter een radio button zit meestal een waarde, 1 of 0 (true, false boolean). Bepaal welke van de 2 true is en welke false en schrijf dan die waarde weg.

Een checkbox kan een aantal waarden bevatte, persoonlijk werk ik dan meestal met bitmasks om die waarden uit te lezen en weg te schrijven in 1 integer.

Cycloon

Legacy Member
Of je doet het the easy way en je slaat de geselecteerde keuze op ipv een bitwaarde waar je later niks meer uit kan halen.

mXXX

Legacy Member
ja maar ik weet niet hoe ik het in mijn insert krijg.... zie begin post in de quote het vetgedrukte en het rood
moet ik die regels in of buiten de sql doen?

Parnakra

Legacy Member
Code:
if (radioButtonMan)
   radiobutton = "man"
else
   radiobutton = "vrouw"
=/

mXXX

Legacy Member
dit moet dus in de SQL?
sry voor de vrage kdoe dit gwn als hobby om by te lere
en hoe werkt dat by een checkbox?

mXXX

Legacy Member
zal het even uit proberen

edit: heb het net in sql code gezet ipv "RADIOBUTTON" maar lukt niet :s
doe ik het verkeerd?

NeverwinterX

Legacy Member
Je moet wat geselecteerd is in de checkbox/radiobutton omzetten in een string (of iets anders als je dat wilt) en dat plaats je dan in de DB.
Ik weet niet in welke taal je aan het programmeren bent, maar misschien is er iets zoals radiobutton.Text.
Als dat er niet is doe je voor de SQL statements iets zoals Parnakra zei (voorbeeld in pseudocode):
Code:
String geslacht;
if (man geselecteerd met de radiobutton)
   geslacht = "man"
else
   geslacht = "vrouw"
En dat geslacht geef je dan mee aan de query.

Parnakra

Legacy Member
Code:
Dim geslacht as String
if radioButtonMan.Checked then
   geslacht = "man"
else
   geslacht = "vrouw"
end if
connectie.Open()
SQLcommand.Connection = connectie
SQLcommand.CommandText = "INSERT INTO tbl_Leerling (Naam,Voornaam,Klas,Geslacht,Geboortedatum,GSM,Ema il) VALUES('" & txtNaam.Text & "','" & txtVoornaam.Text & "','" & cboKlas.Text & "', '" & " geslacht " & "' ,'" & txtGeboortedatum.Text & "','" & txtGSM.Text & "','" & txtEmail.Text & "' )"
SQLcommand.ExecuteNonQuery()
Waarschijnlijk moet je nog de naam van je radiobutton en enkele quotes aanpassen.

mXXX

Legacy Member
zou ik het met een boolean doen dan zou het zijn:
toch?
Dim geslacht As Boolean
If RadioButtonMan.Text = True Then
geslacht = "man"
Else
geslacht = "vrouw"
End If

Zal het even testen!

bedankt voor uw hulp parnakra :)

mXXX

Legacy Member
heb het net ondervonden... ik heb net uw manier getest en lukt maar nu krijg ik een error bij mijn SQLcommand.ExecuteNonQuery()
ik zal het even zelf proberen te vinden, als het dan nog niet lukt dan laat ik iets weten :)
heb liever dat ik het zelf kan ;)

Moto

Legacy Member
hetzelfde probleem heb ik met een checkbox....
checkbox + radiobutton is denk ik den Checked property uitlezen, dus chkBla.Checked

geslacht = RadioButtonMan.Checked ? "man" : "vrouw"

Parnakra

Legacy Member
mXXX zei:
heb het net ondervonden... ik heb net uw manier getest en lukt maar nu krijg ik een error bij mijn SQLcommand.ExecuteNonQuery()
ik zal het even zelf proberen te vinden, als het dan nog niet lukt dan laat ik iets weten :)
heb liever dat ik het zelf kan ;)
Waarschijnlijk hoef je gewoon die double quotes rond geslacht weglaten.
Alhoewel, daar zal de foutmelding niet aan liggen, het zal gewoon een foutieve waarde (proberen) weg (te) schrijven.

mXXX

Legacy Member
ok is gelukt!!
bedankt

ik heb nog een paar problemen maar zal voor andere keer zijn(loop van dit of volgende week) :)

bedankt voor jullie hulp

Albireo

Legacy Member
Ik kom hier rijkelijk laat aandraven, maar ik wou toch nog m'n input geven.

Dit is wat ik zou doen -> Parameters
Code:
SqlCommand cmd = new SqlCommand("INSERT INTO tbl_Leerling (naam, voornaam, klas, geslacht, geboortedatum, gsm, email,oudleerling) VALUES(@naam,@voornaam,@klas,@geslacht,@geboortedatum,@gsm,@email,@oudleerling)",con);
cmd.Parameters.AddWithValue("@naam",name.Text);
cmd.Parameters.AddWithValue("@voornaam", firstName.Text);
cmd.Parameters.AddWithValue("@klas",classList.Text);
if (female.Checked) {
    cmd.Parameters.AddWithValue("@geslacht","V");
}
else if (male.Checked) {
    cmd.Parameters.AddWithValue("@geslacht", "M");
}
else {
    cmd.Parameters.AddWithValue("@geslacht", DBNull.Value);   
}
cmd.Parameters.AddWithValue("@geboortedatum",birthdate.Value);
cmd.Parameters.AddWithValue("@gsm", phone.Text);
cmd.Parameters.AddWithValue("@email", email.Text);
cmd.Parameters.AddWithValue("@oudleerling",oldStudent.Checked);
cmd.ExecuteNonQuery();

"geslacht" is een nchar(1) op de SQL Server (die NULL kan zijn, ter illustratie)

Voor geboortedatum heb ik DateTimePicker ("birthdate") gebruikt en birthdate.Value is de geselecteerde datum (een DateTime). Op deze manier is het gemakkelijk om datums in je database te zetten.

SQL Server kent geen boolean-type maar wel een bit-type (1 of 0) en dat kan je gebruiken als een boolean. Ik heb in de tabel een bit-veld ("oudleerling") toegevoegd en op het formulier een checkbox (oldStudent) en zoals je ziet kan je de "waarde" van die checkbox (oldStudent.Checked) rechtstreeks doorgeven aan je query (zonder dat je een if/then-constructie hoeft op te zetten om dat te wijzigen in 0 of 1).

Nog een voordeel van parameters is dat je je geen zorgen hoeft te maken dat iemand een naam als D'Hondt intypt :)

breez

Legacy Member
man of vrouw zou ik gewoon met een boolean opslaan in de DB
en idd, parameters gebruik om sql injection te vermijden

mXXX

Legacy Member
ik begrijp niks van die parameters :o
nog nooit van gehoord/ gezien
ik ben nu enkel bezig met insert into en select from(heb ik min of meer onder de knie)
nu moet ik delete en update doen.
die update lijkt me iets raar...
ik zal het met die parameters een goed doornemen en hopelijk versta ik er iets van :)µ

bedankt voor de reacties!

Zhergan

Legacy Member
Je gebruikt parameters om te voorkomen dat er hacks gebeuren op je databank. De manier zodat jij geprogrammeerd hebt laat toe om SQL-injection te maken.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan