Как правильно использовать класс SqlConnection

155
28 декабря 2021, 00:20

Недавно начал работать с классом SqlConnection. Я написал обёртку databaseHelper, и у меня возникла проблема. В обертке много функций и каждая использует метод Open() и Close(). И из-за этого данные методы выполняются очень долго. Помогите пожалуйста, заранее спасибо!

using Bot.Bl;
using Bot.Config;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Bot.Database
{
    public class DatabaseHelper
    {
        SqlConnection Connection;
        public VkApiHelper Helper;
        public DatabaseHelper(VkApiHelper helper)
        {
            Helper = helper;
            Connection = DataBase.getInstance().Connection;
        }
        public bool IssetUser(long UserId)
        {
            var user = new DefualtUser(UserId);
            return IssetUser(user);
        }
        public bool IssetUser(BotUser user)
        {
            var query = new SqlCommand($"SELECT COUNT(*) FROM {Settings.Db.TableName} WHERE({Settings.Db.VkUserId})={ user.UserId} ",Connection);
            try
            {
                Connection.Open();
                var res = (int)query.ExecuteScalar();
                if(res == default(int))
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception ex)
            {
                Helper.SendMessage(ex.Message, user.UserId);
                return false;
            }
            finally
            {
                Connection.Close();
            }
        }
        public bool UpdateUser(BotUser user)
        {
            var sqlcommand = new SqlCommand($"UPDATE {Settings.Db.TableName} SET {Settings.Db.VkUserId}={user.UserId}, IsSubscribe={user.IsSubscribe}, Coins={user.Coins},Privilege={user} WHERE {Settings.Db.VkUserId}={user.UserId}", Connection);
            try
            {
                Connection.Open();
                sqlcommand.ExecuteNonQuery();
                return true;
            }
            catch (Exception ex)
            {
                Helper.SendMessage(ex.Message, user.UserId);
                return false;
            }
            finally
            {
                Connection.Close();
            }
        }
        public bool AddUser(BotUser user)
        {
            var sqlcommand = new SqlCommand($"INSERT INTO {Settings.Db.TableName} ({Settings.Db.VkUserId}, IsSubscribe, Coins,Privilege) VALUES ({user.UserId},{user.IsSubscribe},{user.Coins},{user})", Connection);
            try
            {
                Connection.Open();
                sqlcommand.ExecuteNonQuery();
                return true;
            }
            catch(Exception ex)
            {
                Helper.SendMessage(ex.Message, user.UserId);
                return false;
            }
            finally
            {
                Connection.Close();
            }
        }
        public bool RemoveUser(BotUser user)
        {
            var removeuser = new SqlCommand($"DELETE FROM {Settings.Db.TableName} WHERE {Settings.Db.VkUserId}={user.UserId}", Connection);
            try
            {
                Connection.Open();
                int res = removeuser.ExecuteNonQuery();
                if (res == default(int))
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception ex)
            {
                Helper.SendMessage(ex.Message, user.UserId);
                return false;
            }
            finally
            {
                Connection.Close();
            }
        }
    }
}
READ ALSO
Эмулятор Android не видит IIS-сервер ASP.NET CORE

Эмулятор Android не видит IIS-сервер ASP.NET CORE

Пытаюсь получить доступ к серверу из приложения на эмуляторе андроид с помощью RestSharp:

216
Деление числа на разряды

Деление числа на разряды

Не знаю как сделать на c#Помогите плз :\

121
Получить значения параметров JSON файла

Получить значения параметров JSON файла

Делаю веб-сервис, для его работы необходимо получить значения параметров, в данном случае - ("article", "id", "color", "size")Для тестирования использую...

238
Передать функции значение из группы регулярки на C#

Передать функции значение из группы регулярки на C#

Помогите решить мою задачку, есть код:

76