Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Do I have to lock the database connections when multithreading?
- using System;
- using System.Data;
- using System.Collections.Generic;
- // Libraries
- using log4net;
- using log4net.Config;
- using MySql.Data.MySqlClient;
- namespace AIC
- {
- class DB
- {
- private static readonly ILog _logger = LogManager.GetLogger(typeof(DB));
- private MySqlConnection _connection;
- private MySqlCommand _cmd;
- private string _server;
- private string _database;
- private string _username;
- private string _password;
- //Constructor
- public DB(string server, string database, string username, string password)
- {
- log4net.Config.XmlConfigurator.Configure();
- _server = server;
- _database = database;
- _username = username;
- _password = password;
- _connection = new MySqlConnection(string.Format("SERVER={0};DATABASE={1};UID={2};PASSWORD={3};charset=utf8;", _server, _database, _username, _password));
- }
- public bool TestConnection()
- {
- try
- {
- _connection.Open();
- _connection.Close();
- _logger.Info("Connection test, passed...");
- return true;
- }
- catch (MySqlException ex)
- {
- _logger.Error(ex.ToString());
- return false;
- }
- }
- //open connection to database
- private bool Open()
- {
- try
- {
- if (_connection.State != ConnectionState.Open)
- _connection.Open();
- _logger.Info("Starting connection to database...");
- return true;
- }
- catch (MySqlException ex)
- {
- _logger.Error(ex.ToString());
- return false;
- }
- }
- //Close connection
- private bool Close()
- {
- try
- {
- if (_connection.State != ConnectionState.Closed)
- _connection.Close();
- _logger.Info("Closing connection to database...");
- return true;
- }
- catch (MySqlException ex)
- {
- _logger.Error(ex.ToString());
- return false;
- }
- }
- // Some basic functions
- public bool UserExist(string user)
- {
- string query = "SELECT user_id FROM users WHERE username=@name LIMIT 1";
- if (this.Open())
- {
- try
- {
- // Assign the connection
- _cmd = new MySqlCommand(query, _connection);
- // Prepare to receive params
- _cmd.Prepare();
- // Fill up the params
- _cmd.Parameters.AddWithValue("@name", user);
- // returned count bool
- bool result = Convert.ToInt32(_cmd.ExecuteScalar()) > 0;
- // Close connection
- this.Close();
- return result;
- }
- catch (MySqlException ex)
- {
- _logger.Error(ex.ToString());
- this.Close();
- return false;
- }
- }
- else
- {
- _logger.Error("You must be connected to the database before performing this action");
- return false;
- }
- }
- public bool AddUser(string user)
- {
- // .... add user to database
- }
- public bool DelUser(string user)
- {
- // .... del user from database
- }
- public int CountUsers()
- {
- // .... count total users from database
- }
- }
- }
Add Comment
Please, Sign In to add comment