Guest User

Untitled

a guest
Aug 26th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.80 KB | None | 0 0
  1. Do I have to lock the database connections when multithreading?
  2. using System;
  3. using System.Data;
  4. using System.Collections.Generic;
  5.  
  6. // Libraries
  7. using log4net;
  8. using log4net.Config;
  9. using MySql.Data.MySqlClient;
  10.  
  11. namespace AIC
  12. {
  13. class DB
  14. {
  15. private static readonly ILog _logger = LogManager.GetLogger(typeof(DB));
  16. private MySqlConnection _connection;
  17. private MySqlCommand _cmd;
  18. private string _server;
  19. private string _database;
  20. private string _username;
  21. private string _password;
  22.  
  23. //Constructor
  24. public DB(string server, string database, string username, string password)
  25. {
  26. log4net.Config.XmlConfigurator.Configure();
  27.  
  28. _server = server;
  29. _database = database;
  30. _username = username;
  31. _password = password;
  32.  
  33. _connection = new MySqlConnection(string.Format("SERVER={0};DATABASE={1};UID={2};PASSWORD={3};charset=utf8;", _server, _database, _username, _password));
  34. }
  35.  
  36. public bool TestConnection()
  37. {
  38. try
  39. {
  40. _connection.Open();
  41. _connection.Close();
  42. _logger.Info("Connection test, passed...");
  43. return true;
  44. }
  45. catch (MySqlException ex)
  46. {
  47. _logger.Error(ex.ToString());
  48. return false;
  49. }
  50. }
  51.  
  52. //open connection to database
  53. private bool Open()
  54. {
  55. try
  56. {
  57. if (_connection.State != ConnectionState.Open)
  58. _connection.Open();
  59. _logger.Info("Starting connection to database...");
  60. return true;
  61. }
  62. catch (MySqlException ex)
  63. {
  64. _logger.Error(ex.ToString());
  65. return false;
  66. }
  67. }
  68.  
  69. //Close connection
  70. private bool Close()
  71. {
  72. try
  73. {
  74. if (_connection.State != ConnectionState.Closed)
  75. _connection.Close();
  76. _logger.Info("Closing connection to database...");
  77. return true;
  78. }
  79. catch (MySqlException ex)
  80. {
  81. _logger.Error(ex.ToString());
  82. return false;
  83. }
  84. }
  85.  
  86. // Some basic functions
  87. public bool UserExist(string user)
  88. {
  89. string query = "SELECT user_id FROM users WHERE username=@name LIMIT 1";
  90. if (this.Open())
  91. {
  92. try
  93. {
  94. // Assign the connection
  95. _cmd = new MySqlCommand(query, _connection);
  96.  
  97. // Prepare to receive params
  98. _cmd.Prepare();
  99.  
  100. // Fill up the params
  101. _cmd.Parameters.AddWithValue("@name", user);
  102.  
  103. // returned count bool
  104. bool result = Convert.ToInt32(_cmd.ExecuteScalar()) > 0;
  105.  
  106. // Close connection
  107. this.Close();
  108. return result;
  109. }
  110. catch (MySqlException ex)
  111. {
  112. _logger.Error(ex.ToString());
  113. this.Close();
  114. return false;
  115. }
  116. }
  117. else
  118. {
  119. _logger.Error("You must be connected to the database before performing this action");
  120. return false;
  121. }
  122. }
  123.  
  124. public bool AddUser(string user)
  125. {
  126. // .... add user to database
  127. }
  128.  
  129. public bool DelUser(string user)
  130. {
  131. // .... del user from database
  132. }
  133.  
  134. public int CountUsers()
  135. {
  136. // .... count total users from database
  137. }
  138. }
  139. }
Add Comment
Please, Sign In to add comment