我正在尝试将我的数据添加到数据库中,但是无论何时它都会显示异常消息“连接未关闭”。 我已经搜索了一些解决方案示例
using (SqlConnection connection = new SqlConnection(connectionString))
{
//etc...
}
但它不起作用。
这是代码
SqlConnection con = new SqlConnection(@"connecting string");
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
//cmd.CommandText = " insert into Manipulate values('" + txtICNO.Text + "','" + txtName.Text + "','" + txtDisease.Text + "','" + txtContact.Text + "','" + txtHistory.Text + "','" + txtAddress.Text + "')";
cmd.CommandText = "insert into Manipulate (ICNO,Name,Disease,Contact,History,Address,Gender) values(@ICNO,@Name,@Disease,@Contact,@History,@Address,@Gender)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@ICNO", txtICNO.Text);
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@Disease", txtDisease.Text);
cmd.Parameters.AddWithValue("@Contact", txtContact.Text);
cmd.Parameters.AddWithValue("@History", txtHistory.Text);
cmd.Parameters.AddWithValue("@Address", txtAddress.Text);
if (rdbMale.Checked)
cmd.Parameters.AddWithValue("@gender", "Male");
else
cmd.Parameters.AddWithValue("@gender", "Female");
cmd.ExecuteNonQuery();
displayData();
MessageBox.Show("record add successfully");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
答案 0 :(得分:0)
您的连接在其他位置打开,并在btnAdd_Click
中关闭。
另外,我不知道displayData()
会发生什么
将新的Connection声明移到btnAdd_Click
中并附上
{using}块中的所有新对象实例
然后,查看displayData()
内的内容。
private void btnAdd_Click(object sender, EventArgs e)
{
try
{
using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(@"connecting string"))
{
con.Open();
using (System.Data.SqlClient.SqlCommand cmd = con.CreateCommand())
{
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "insert into Manipulate (ICNO,Name,Disease,Contact,History,Address,Gender) " +
"values(@ICNO,@Name,@Disease,@Contact,@History,@Address,@Gender)";
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@ICNO", txtICNO.Text);
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@Disease", txtDisease.Text);
cmd.Parameters.AddWithValue("@Contact", txtContact.Text);
cmd.Parameters.AddWithValue("@History", txtHistory.Text);
cmd.Parameters.AddWithValue("@Address", txtAddress.Text);
if (rdbMale.Checked)
cmd.Parameters.AddWithValue("@gender", "Male");
else
cmd.Parameters.AddWithValue("@gender", "Female");
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
displayData();
MessageBox.Show("record add successfully");
}
答案 1 :(得分:0)
您可以添加以下条件:
if(con.State==ConnectionState.Close)
{
con.Open();
}
这不会重新打开连接。