读书人

请大家看上小弟我的代码哪来出错了

发布时间: 2013-02-17 10:44:46 作者: rapoo

请大家看下我的代码哪来出错了?
在做一个系统,正在做登陆部分,因为经常要连接数据库,就自己写了个类

 public class SQLcon
{
private string con = "server=(local);user id=sa;password=sa;database=student";

public SqlConnection ConnectToDatabase()
{
return new SqlConnection(con);
}
public bool Login(string uid, string pwd, SqlConnection mycon) //判断是否登陆成功
{
if (mycon.State != ConnectionState.Open)
{
MessageBox.Show("数据库未打开");
try
{
mycon.Open();
SqlCommand login = new SqlCommand();
string str = " select UserID from UserLogin where UserName='" + uid + "' and PassWord ='" + pwd + "' ";
login.CommandText = str;
login.Connection = mycon;
SqlDataReader result = login.ExecuteReader();
mycon.Close();
if (result.HasRows)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)


{
MessageBox.Show("数据库异常!请重试!");
return false;
}
}
else
{
MessageBox.Show("数据库已经打开");
mycon.Close();
return false;
}
}

}





而登陆按钮

private void LoginBotton_Click(object sender, EventArgs e)
{
bool login = false;
SQLcon conn = new SQLcon();
SqlConnection newCon = conn.ConnectToDatabase();
login = conn.Login(ID.Text.Trim(), Code.Text.Trim(),newCon);
if (login)
{
MainForm form1 = new MainForm();
form1.Show();
}
else
{
MessageBox.Show("登陆失败!");
}

}




执行之后,try部分没有执行,直接到catch 部分,弹出 数据库异常
请大家帮忙找出问题,谢谢
[解决办法]
把 mycon.Close();这句移到finally{}中
try
{
mycon.Open();
SqlCommand login = new SqlCommand();
string str = " select UserID from UserLogin where UserName='" + uid + "' and PassWord ='" + pwd + "' ";


login.CommandText = str;
login.Connection = mycon;
SqlDataReader result = login.ExecuteReader();
if (result.HasRows)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
MessageBox.Show("数据库异常!请重试!");
return false;
}
finally
{ mycon.Close();}

读书人网 >C#

热点推荐