日期:2014-05-18  浏览次数:21073 次

连接未关闭。 连接的当前状态为打开。
//登录操作
  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连接