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 !";
}
}
}
}
}
но он дает сообщение об ошибке "Соединение должно быть действительным и открытым". Что я делаю неправильно?
при 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))
{
........
}
}
MySqlConnection
вы должны открыть соединение с помощью cn.Open()
. Затем передайте объект подключения объекту команды.
new MySqlCommand("sql string...", cn);
, А затем рефакторинг для использования параметров, чтобы избежать внедрения SQL и синтаксических ошибок.*
наadsoyad, kullaniciid
чтобы уменьшить количество байтов, которые вам отправляют.