首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

联接未关闭。 连接的当前状态为打开

2012-07-29 
连接未关闭。 连接的当前状态为打开。//登录操作private void btn_sign_Click(object sender, EventArgs e){

连接未关闭。 连接的当前状态为打开。
//登录操作
  private void btn_sign_Click(object sender, EventArgs e)
  {
  //conn.Open();
  sql = "select * from yonghu where yuser='" + txt_user.Text + "'";
  SqlCommand cmd=new SqlCommand(sql,conn);
  SqlDataReader reader=cmd.ExecuteReader();
  if(txt_user.Text.Length == 0)
  {
  MessageBox.Show("请输入用户名,用户名不能为空");
  txt_user.Focus();
  return;
  }
  else if(reader.Read())
  {
  string pwd = reader.GetString(reader.GetOrdinal("ypwd"));
  if (txt_pwd.Text == pwd)
  {
  MessageBox.Show("登陆成功");
  }
  else
  {
  MessageBox.Show("用户名或密码错误,请重新输入");
  txt_pwd.Text = "";
  }
  }  
  conn.Close();
  }

明明已经conn.close();了,怎么还是提示这个问题

[解决办法]
if(txt_user.Text.Length == 0)
{
MessageBox.Show("请输入用户名,用户名不能为空");
txt_user.Focus();
return;
}

这个地方return的话就没有conn.Close()

在return之前close就可以,

if(txt_user.Text.Length == 0)
{
MessageBox.Show("请输入用户名,用户名不能为空");
txt_user.Focus();
conn.Close();
return;
}

[解决办法]
添加try catch,在finnally里close连接

热点排行