Соединение с базой данных, которое не закрывается (MySQL) - PullRequest
0 голосов
/ 23 апреля 2019

я обнаружил, что иногда я получаю тайм-аут, очень медленное начальное соединение и т. Д. При подключении к mysql-db.

По словам моего веб-хостинга, я не закрываю свои соединения. Но я думаю, что не могу найти ошибку. Помогите, пожалуйста, подтвердить соответствие моего кода или исправление кода.

Код ниже вы можете найти для одного SelectCommand и одного ExecuteNonQuery.

List<MySqlParameter> param = new List<MySqlParameter>();
string strConnectionString = "server=mysqlXXX.loopia.se;uid=XXX;pwd=XXX;database=XXX;convert zero datetime=True";

private void ExecuteNonQuery(string strSQL, List<MySqlParameter> parameters)
{

    using (MySqlConnection connection = new MySqlConnection(strConnectionString))
    {
        connection.Open();
        using (MySqlCommand command = new MySqlCommand(strSQL, connection))
        {
            foreach (MySqlParameter param in parameters)
                command.Parameters.AddWithValue(param.ParameterName, param.Value);

            command.ExecuteNonQuery();
        }
    }
}

private DataSet getData(string query, List<MySqlParameter> parameters)
{
    using (MySqlConnection connection = new MySqlConnection(strConnectionString))
    {
        MySqlDataAdapter da = new MySqlDataAdapter();
        DataSet ds = new DataSet();

        connection.Open();
        using (MySqlCommand command = new MySqlCommand(query, connection))
        {
            foreach (MySqlParameter param in parameters)
                command.Parameters.AddWithValue(param.ParameterName, param.Value);

            da.SelectCommand = command;
        }

        da.Fill(ds);

        return ds;
    }
}

public DataSet GetSCustomers()
{
    var sql = $"SELECT * FROM Customer ";

    param.Clear();
    return getData(sql, param);
}

public void UpdateCustomerPinCode(string customerId, int pin)
{
    var sql = $"UPDATE Customer SET pin = @pin WHERE customerId = @customerId;

    param.Clear();
    param.Add(new MySqlParameter("@customerId", customerId));
    param.Add(new MySqlParameter("@pin", pin));

    ExecuteNonQuery(sql, param);
}
...