请大家帮我看下下面代码,我是新手,请大家帮忙。谢谢
public SqlConnection con = null;
public SqlCommand com = null;
public static string M_admname;
public static string M_password;
private void button1_Click(object sender, EventArgs e)
{
con = gc.GetCon();
com = new SqlCommand("proc_admin", con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.Add("@admname", SqlDbType.VarChar, 20).Value = M_admname;
com.Parameters.Add("@password", SqlDbType.VarChar, 50).Value = M_password;
con.Open();
int p_result = com.ExecuteNonQuery();
con.Close();
if (p_result == 100)
{
M_admname = this.txtname.Text;
M_password = this.txtpassword.Text;
Form1 frmmain = new Form1();
frmmain.Show();
this.Close();
con.Close();
}
if(p_result==-100)
{
MessageBox.Show("用户名或密码不正确", "友情报提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
txtname.Text="";
txtname.Focus();
}
}
错误说有对象未关闭。我找了很长间都找不出来,这是个验证用户和密码的存储,
第一个IF外面已经con.Close();了,在if里面两个分支里还全都要con.Close();,这样用肯定会报错吧。去掉外面的或去掉里面的。
用了两次con.close();你要注意con的打开和关闭。
两个if中的con.close()都去掉
if (Con.State == ConnectionState.Open)
{
Con.Close();
}
最好用 Try...Catch...Finally
把 Con.Close(); 放在 Finally block 里
try
{
// your code
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
if (Con.State == ConnectionState.Open)
{
Con.Close();
}
}