[c#] Strings via een query verzenden werkt niet

Pagina: 1
Acties:

  • Reb87
  • Registratie: Maart 2003
  • Niet online
Hey,

Ik heb op het moment bezig met een adressenboekje maken, gewoon om wat dingen te testen. Ik heb hierbij een datagridview gebruikt die gelinkt is naar een access database die in de zelfde map als het programma staat. Nu heb ik het voor elkaar gekregen om data toe te voegen via een query

code:
1
2
3
4
5
6
string query = "INSERT INTO contacten (Voornaam) VALUES ('Benjamin')";
OleDbConnection myConnection = new OleDbConnection(oleDbConnection1.ConnectionString);
OleDbCommand myCommand = new OleDbCommand(query, myConnection);
myCommand.Connection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();


Het probleem is nu dat de query wel werkt als ik de values al in de query zet, maar niet als ik b.v. van txtVoornaam.Text de values wil halen. ik heb dit al op diverse manieren geprobeerd in de query te zetten, maar niets werkt. :'( Kan iemand even helpen? :)

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 09:20

Wacky

Dr. Lektroluv \o/

Doe het zo:

code:
1
string query = "INSERT INTO contacten (Voornaam) VALUES ('"+string+"')";


Helaas wel een tijdrovend werkje als je een groot aantal strings in een query wilt hebben :|

edit: Zo kan ook:
code:
1
string query = "INSERT INTO contacten (Voornaam) VALUES ('"+textBox1.Text.ToString()+"')";

[ Voor 31% gewijzigd door Wacky op 05-08-2004 12:37 ]

Nu ook met Flickr account


  • Reb87
  • Registratie: Maart 2003
  • Niet online
Hey bedankt :) Het werkt nu 8)

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 09:20

Wacky

Dr. Lektroluv \o/

:Y)

Nu ook met Flickr account


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 mept nog eventjes een verhaaltje neer over SQL Injection en parametrized queries.
Helaas wel een tijdrovend werkje als je een groot aantal strings in een query wilt hebben
Daarom hebben ze ook O/R mappers uitgevonden, voor dit soort vervelende karweitjes :)

[ Voor 50% gewijzigd door gorgi_19 op 05-08-2004 12:45 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Doe eens even *heel* snel die SQL Injection uitlokkende code aanpassen :X

Anders wil ik wel eens "'); delete contacten; insert contacten (Voornaam) values ('you got f**ked!!!!" in die tekstbox invullen :Y)

Daar hebben we ook een FAQ voor overigens hoe je dit wel oplost.

* curry684 zwaait naar gorgi_19 :w

[ Voor 6% gewijzigd door curry684 op 05-08-2004 12:46 ]

Professionele website nodig?


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wacky schreef op 05 augustus 2004 @ 12:37:
code:
1
string query = "INSERT INTO contacten (Voornaam) VALUES ('"+textBox1.Text.ToString()+"')";
Waarom doe je textbox1.Text.ToString() De Text property is al een string

voor de rest kan je beter gebruik maken van parameterized query's dus ongeveer zo

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
SqlConnection connection = new SqlConnection( ConnectionString );
SqlCommand command = new SqlCommand();
command.CommandText = "Select * from tabel where field = @param";
command.CommandType = CommandType.Text;
command.Connection = connection;

SqlParameter param = new SqlParameter( "@param", SqlDbType.Char, 32 );
param.Value = textbox1.Text;
command.Parameters.Add( param );

connection.Open();

SqlDataReader reader = command.ExecuteReader();


Dan hoef je ook niet moeilijk te doen met string concatenation en het is ook een stuk veiliger en makkelijker met diverse types.

edit:

Ik zie trouwens dat je niet met MSSQL werkt. maar met de OleDB werkt het bijna hetzelfde.


offtopic:
ik was dus niet de enige die dit dacht ;)

[ Voor 17% gewijzigd door Woy op 05-08-2004 12:50 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Reb87
  • Registratie: Maart 2003
  • Niet online
nog 1 vraagje, hoe kan ik van meerdere textboxen tegelijk de query versturen?

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

bin_jackson schreef op 05 augustus 2004 @ 12:48:
nog 1 vraagje, hoe kan ik van meerdere textboxen tegelijk de query versturen?
INSERT INTO contacten (Voornaam, veld) VALUES ('naam','veld1')

Maar neem anders op www.w3schools.com eens een cursus SQL door :) Want op deze manier krijgen we je volgende vraag binnen 4 minuten :)

[ Voor 23% gewijzigd door gorgi_19 op 05-08-2004 12:49 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Reb87
  • Registratie: Maart 2003
  • Niet online
Dom van mij, ik had de ' over het hoofd gezien. Ik snap het nu weer helemaal :) Bedankt! :)
Pagina: 1