Недавно начал работать с классом 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();
}
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь получить доступ к серверу из приложения на эмуляторе андроид с помощью RestSharp:
Делаю веб-сервис, для его работы необходимо получить значения параметров, в данном случае - ("article", "id", "color", "size")Для тестирования использую...