Как правильно открыть соединение MySQL?

0

Im делает проект в С# ASP.NET с MySQL. Я пытаюсь правильно открыть соединение MySql. Также закройте/установите это соединение правильно. Becouse это дает ту ошибку иногда

"mySQL ERROR: система не имела достаточного пространства в буфере или потому, что очередь была заполнена".

Во всяком случае, поэтому я решил использовать метод "using" для моего текущего метода подключения;

MySqlConnection baglanti = new MySqlConnection(ConfigurationManager.ConnectionStrings["mysqlbaglanti"].ToString());

void GirisYap()
{
    using (var cn = baglanti)
    {
        cn.Open();
        using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM kullanicilar WHERE kullaniciadi='" + txtKullaniciAdi.Text + "' AND sifre='" + txtSifre.Text + "'"))
        {
            using (MySqlDataReader oku = cmd.ExecuteReader())
            {
                if (oku.Read())
                {
                    Session.Add("AdSoyad", oku["AdSoyad"]);
                    Session.Add("sesid", oku["kullaniciid"]);
                    Response.Redirect("AnaSayfa.aspx");
                }
                else
                {
                    lblDurum.Text = "Yanlış Kullanıcı Adı/Şifre !";
                }
            }
        }
    } 
}

но он дает сообщение об ошибке "Соединение должно быть действительным и открытым". Что я делаю неправильно?

  • 0
    Вы никогда не назначаете соединение Команде. Используйте new MySqlCommand("sql string...", cn); , А затем рефакторинг для использования параметров, чтобы избежать внедрения SQL и синтаксических ошибок.
  • 0
    Не уверен, сколько полей в этой таблице, но подумайте о замене этого * на adsoyad, kullaniciid чтобы уменьшить количество байтов, которые вам отправляют.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

при using вы должны создать новый IDisposible объект. Когда вы выйдете из области действия, он будет удален.

В вашем коде вы создаете соединение при построении объекта класса. После первого использования cn ваш объект baglanti будет baglanti. После первого использования вы не можете открыть соединение. Следовательно, вы должны сгенерировать объект соединения в инструкции using.

Все выше - совет, а не решение вашей проблемы. Ваша проблема в том, что в объекте command нет объекта подключения. Вы можете передать объект connectin для управления объектом через конструктор

Вы должны использовать как:

string connectionStr = ConfigurationManager.ConnectionStrings["mysqlbaglanti"].ToString());

void GirisYap()
{
    using (var cn = new new MySqlConnection(connectionStr))
    {
        cn.Open();
        // command object should take connection object
        using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM kullanicilar WHERE kullaniciadi='" + txtKullaniciAdi.Text + "' AND sifre='" + txtSifre.Text + "'", cn))
        {
            ........
        }
}
  • 0
    ну, я должен добавить cn.Open (); так или иначе. это не работает, если я не
  • 0
    Да. После создания объекта MySqlConnection вы должны открыть соединение с помощью cn.Open() . Затем передайте объект подключения объекту команды.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню