login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[C#] MySql

Offline dododedodo - 01/06/2009 17:04
Avatar van dododedodoLid Hoi,

Ik ben nu bezig met het uitvogelen van MySql in C#. Nu loop ik tegen de vraag aan, hoe doe ik escapen? Ik heb op google gekeken maar kan er niets over vinden.

En ik vraag ook nog om wat tips te geven waarop ik bij moet letten als ik in C# MySql codeer. Ik heb ervaring met MySql in PHP. De commando's (Select, insert etc.) lijken me hetzelfde.

Groetjes,
Dodo

13 antwoorden

Gesponsorde links
Offline Joost - 01/06/2009 17:14
Avatar van Joost PHP expert Totaal geen verstand van C#, maar ik heb even gegoogled, en je moet ze als parameters meegeven. Ze worden dan automatisch ge-escaped. (bron: http://www.mail...06320.html )

In C# zijn de query's precies hetzelfde als in PHP, immers, MySQL handelt die queries af en niet PHP of C#.
Offline dododedodo - 01/06/2009 17:30 (laatste wijziging 01/06/2009 18:52)
Avatar van dododedodo Lid Dat laatste leek mij al waarschijnlijk.

Zo'n artikeltje heb ik meer gevonden, maar bedoelen ze er nu mee dat als ik het volgende doe is alles dus al ge-escaped?

  1. command.CommandText = "SELECT id FROM tabel WHERE name = '" + name + "'";
Offline Joost - 01/06/2009 18:06
Avatar van Joost PHP expert http://forums.m...msg-186801

Gegoogled op "MySQL C# escape" ..
Offline dododedodo - 01/06/2009 18:14
Avatar van dododedodo Lid Waarom kan ik dat weer niet vinden -.-
Offline Martijn - 01/06/2009 18:18
Avatar van Martijn Crew PHP omdat googlen ook een kunst is 
Offline dododedodo - 01/06/2009 18:51 (laatste wijziging 01/06/2009 19:18)
Avatar van dododedodo Lid Ok, dat probleem is nu opgelost. Nu wil ik alle commands die ik gebruik in een list gooien (waarom weet ik nog niet, maarja). Nu wil ik de index van het laatst toegevoegde item. Kan ik dat zo doen of is daar al een methode voor.
  1. cmd.Add(connection.CreateCommand());
  2. int lastItemIndex = ( cmd.Count - 1 );


En nog een vraag.
Als ik een command uitvoer, moet de connectie dan open blijven onder het ophalen van de values?
  1. connection.Open();
  2. cmdResult.Add(cmd[1].ExecuteReader());
  3. //Moet de connectie hier gesloten worden?
  4.  
  5. //uitlezen (see next question)
  6.  
  7. //of moet hij hier gesloten worden


En als dat nog niet genoeg was heb ik er nog een.
Hoe ziet de output er eigenlijk uit van het command.
Als ik nu de waarde wil hebben van de kolum name. Hoe doe ik dat?
En als ik meerdere rows heb, hoe doe ik dat dan?
Offline Bart - 01/06/2009 19:57 (laatste wijziging 01/06/2009 19:59)
Avatar van Bart PHP expert Hoe je dat allemaal doet staat prima beschreven op Google. Leer eens zoeken! Er wordt hier niets voorgeschoteld, alleen maar geholpen als je zelf ook laat zien wat je al geprobeert hebt.. komop zeg.

http://lmgtfy.com/?q=how%20to%20use%20google
Offline Abbas - 01/06/2009 20:22
Avatar van Abbas Gouden medaille

Crew .NET
Leer ook eens een beetje zoeken hier op sitemasters zelf: http://www.site...amp;_Forms... Een volledige tutorial over .NET en MySQL! 
Offline dododedodo - 01/06/2009 22:34 (laatste wijziging 03/06/2009 22:44)
Avatar van dododedodo Lid Ik had inderdaad niet op sitemasters gezocht, maar zeker op google wél. Maar daar kon ik nergens een voorbeeld vinden.

*edit*
Stel, ik heb deze tabel:
  1. +---------------------------------+
  2. | id | name | email |
  3. +---------------------------------+
  4. | 1 | tom | example1@example.nl |
  5. +--------------------------------+
  6. | 2 | tim | example2@example.nl |
  7. +---------------------------------+


Ik haal het op:
  1. MySqlConnection conn = new MySqlConnection("SERVER=localhost;DATABASE=testdatabase;UID=root;PASSWORD=secret;");
  2. MySqlCommand cmd = conn.CreateCommand();
  3. cmd.Text = "SELECT id, name, email FROM testtabel";
  4. MySqlDataReader rdr;
  5.  
  6. try
  7. {
  8. conn.Open();
  9. rdr = cmd.ExecuteReader();
  10. while (rdr.Read())
  11. {
  12. //Hoe zit het hier dan in het variabel rdr?
  13. }
  14. rdr.Close();
  15. }
  16. catch (Exception x)
  17. {
  18. }
Offline Abbas - 03/06/2009 23:02
Avatar van Abbas Gouden medaille

Crew .NET
Zorg dat je bijvoorbeeld een string hebt met de naam "tblLine":

  1. //Code die dan in die while moet
  2. tblLine += rdr.GetValue(0).ToString();
  3. tblLine += " - ";
  4. tblLine += rdr.GetValue(1).ToString();
  5. tblLine += " - ";
  6. tblLine += rdr.GetValue(2).ToString();
  7. MessageBox.Show(tblLine);
  8. //Output is dan 2x een MessageBox:
  9. //Eerste: 1 - tom - example1@example.nl
  10. //Tweede: 2 - tim - example2@example.nl
  11. tblLine = String.Empty;
Offline dododedodo - 04/06/2009 08:10
Avatar van dododedodo Lid Dus als ik in de kolomlijst name en email omdraai, dan krijg je ze ook andersom in dit variabel?
Offline Ultimatum - 04/06/2009 08:52
Avatar van Ultimatum PHP expert Ja, de kolommen na select kan je dan ophalen met GetValue(positie), welk nummer ligt dus aan de volgorde.

Je kan trouwens ook GetString gebruiken die heeft als parameter een string met de naam van de kolom, is misschien makkelijker/duidelijker dan een numerieke waarde.
Offline Abbas - 04/06/2009 11:29
Avatar van Abbas Gouden medaille

Crew .NET
Je kan ook inderdaad GetString() of GetInt32() of zelfs GetBoolean(), maar dan moet je zeker zijn dat de kolom van hetzelfde type is. Als je GetValue() gebruikt, kan je achteraf gewoon ToString() gebruiken om het eenvoudigweg weer te geven. Als er nog verdere berekeningen nodig zijn kan je best de andere gebruiken. 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.195s