我正在用mysql在c#asp.net中做一个项目。我试图打开一个mysql连接正确。同时正确关闭/处理此连接。因为它有时会出错
“mysql错误:系统缺少足够的缓冲区空间,或者因为队列已满。”
无论如何,我决定使用“使用”方法,我目前的连接方法这样;
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 !";
}
}
}
}
}
但它给出了一个错误“连接必须是有效的和开放的”,我做错了什么?
1条答案
按热度按时间lyfkaqu11#
在
using
你应该创建新的IDisposible
对象。当您使用scope退出时,它将被释放。在代码中,在类对象构造期间生成连接。首次使用后
cn
,您的baglanti
对象将被释放。首次使用后,无法打开连接。因此,您应该在using语句中生成连接对象。以上都是建议,不是解决问题的办法。您的问题是,command对象没有connection对象。您可以通过构造函数将connectin对象传递给command对象
你应该像这样使用: