[C#] Database class

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • [C#] Database class

      Beste lezer,

      Ik heb nog niet veel met MySQL en C# samen gedaan, maar ik wil graag een class maken waar ik query's naar kan sturen en dat deze dan worden uitgevoerd en het resultaat terug gestuurd wordt. Ik heb al een Class gemaakt maar vroeg me af of dit beter kon of dat iemand een betere class heeft.

      Hier mijn class.

      Source Code

      1. using MySql.Data.MySqlClient;
      2. using System;
      3. using System.Collections.Generic;
      4. using System.Data;
      5. using System.Linq;
      6. using System.Text;
      7. using System.Threading.Tasks;
      8. using System.Windows.Forms;
      9. namespace E_learning
      10. {
      11. class Database
      12. {
      13. private MySqlConnection _MySQLconn;
      14. /**
      15. * Database - Class constructor
      16. * stabilize database connection.
      17. */
      18. public Database(string _sUser, string _sPassword, string _sDatabase, string _sHost = "locahost")
      19. {
      20. // Create DB connection
      21. _MySQLconn = new MySqlConnection("Server=" + _sHost + ";Database=" + _sDatabase + ";Uid=" + _sUser + ";Pwd="+ _sPassword +";");
      22. _MySQLconn.Open(); // Open DB connection
      23. }
      24. /**
      25. * query - This functions is used to creates queries
      26. */
      27. public DataTable query(string sQuery = "")
      28. {
      29. MySqlCommand mscSelect = new MySqlCommand(sQuery, _MySQLconn); // Create query
      30. try
      31. {
      32. MySqlDataReader mscReader = mscSelect.ExecuteReader();
      33. DataTable dtData = new DataTable();
      34. dtData.Load(mscReader);
      35. return dtData;
      36. }
      37. catch (Exception)
      38. {
      39. MessageBox.Show("Helaas, er is iets fout gegaan bij het ophalen van de gegevens.");
      40. }
      41. return new DataTable();
      42. }
      43. /**
      44. * conn - Function that will return the MySQLConnection.
      45. * When send a parameter it will set a new connection.
      46. */
      47. public MySqlConnection conn(MySqlConnection NewMySQLconn = null)
      48. {
      49. if (MySqlConnection.ReferenceEquals(_MySQLconn, NewMySQLconn))
      50. {
      51. _MySQLconn = NewMySQLconn;
      52. }
      53. return _MySQLconn;
      54. }
      55. }
      56. }
      Display All


      EDIT:

      Ik heb de tips van Bits geïmplementeerd. Hier het resultaat.
      Met vriendelijke groet,

      Dees

      The post was edited 1 time, last by Dees ().

    • Wat mij vooral opvalt is dat je in je catch een messagebox.show doet, dat betekend dat je form elementen in je class hebt gedaan en dat is niet de bedoeling.

      Verder ga je querys wegschrijven, maar let je niet op sql injectie. Beter is om te zorgen dat je een query stuurt en parameters voor die query.

      Moet je maar eens kijken naar voorbeelden hoe je geparameteriseerde query's schrijft.
    • SQL injection maakt op dit moment niet zo uit, het is een project voor school waar ik een E-Learnings applicatie moet maken voor kinderen uit een ziekenhuis. Moet ook zorgen dat de behaalde resultaten in een Care2X ziekenhuis systeem moet komen. Vandaar dat ik alle resultaten in die database ga zetten.

      Maar aan de code zelf, behalve de sql injection en de tijdelijke messagebox, is het wel een goede code voor het maken van query's?

      Ik zal trouwens wel even kijken naar de geparameteriseerde query's dit kan later zeker nog van pas komen.
      Met vriendelijke groet,

      Dees
    • Sander.DJ wrote:

      L. Velthuis wrote:

      Alleen een MessageBox laten zien bij een try catch statement is niet zo'n ramp?

      Stel dat je deze class gaat gebruiken in een ASP.net applicatie en je komt in de catch terecht. Dan geeft je programma een messagebox aan de server die nooit beantwoord gaat worden. Met als gevolg dat je programma blijft hangen. Dat is niet de bedoeling.
      Hmm,

      Is ook weer waar. Thanks wist ik niet :).

      zal hij dan in plaats van een messagebox een console.writeline moeten uitvoeren?
      Beginnend DJ! Volg mij op MixCloud!

      Lars Velthuis | Mixcloud