C# 使用数据库时,表单关闭时出错
我试图使其在更改组合框中的值时,数据库显示在dataGridview中。一切似乎都正常,但关闭表单时会出现错误: 输入图像: 代码:C# 使用数据库时,表单关闭时出错,c#,ado.net,C#,Ado.net,我试图使其在更改组合框中的值时,数据库显示在dataGridview中。一切似乎都正常,但关闭表单时会出现错误: 输入图像: 代码: 您有一个DB类,它可以很好地将数据库代码与用户界面代码分开。我将数据库代码移动到DB类中以检索国家数据。请注意,DB类对用户界面一无所知,而用户界面对数据库一无所知 需要关闭和释放数据库对象使用块即使出现错误,也要为您解决此问题 public class DB { private string ConStr = "Your con
您有一个
DB
类,它可以很好地将数据库代码与用户界面代码分开。我将数据库代码移动到DB
类中以检索国家数据。请注意,DB
类对用户界面一无所知,而用户界面对数据库一无所知
需要关闭和释放数据库对象<代码>使用块即使出现错误,也要为您解决此问题
public class DB
{
private string ConStr = "Your connection string";
public DataTable GetCountryData(string nC)
{
DataTable dt = new DataTable();
using (SqlConnection cn = new SqlConnection(ConStr))
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Voucher WHERE Name_Country= @nC", cn))
{
cmd.Parameters.Add("@nC", SqlDbType.VarChar, 100).Value = nC;
cn.Open();
dt.Load(cmd.ExecuteReader());
}
return dt;
}
}
然后在形式上
private void OpCode()
{
if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("Please select a value in the drop down.");
return;
}
DB DataClass = new DB();
dataGridView1.DataSource = DataClass.GetCountryData(comboBox1.SelectedValue.ToString());
}
private void操作码()
{
如果(comboBox1.SelectedIndex<0)
{
Show(“请在下拉列表中选择一个值”);
返回;
}
DB DataClass=new DB();
dataGridView1.DataSource=DataClass.GetCountryData(comboBox1.SelectedValue.ToString());
}
您有一个DB
类,它可以很好地将数据库代码与用户界面代码分开。我将数据库代码移动到DB
类中以检索国家数据。请注意,DB
类对用户界面一无所知,而用户界面对数据库一无所知
需要关闭和释放数据库对象<代码>使用块即使出现错误,也要为您解决此问题
public class DB
{
private string ConStr = "Your connection string";
public DataTable GetCountryData(string nC)
{
DataTable dt = new DataTable();
using (SqlConnection cn = new SqlConnection(ConStr))
using (SqlCommand cmd = new SqlCommand("SELECT * FROM Voucher WHERE Name_Country= @nC", cn))
{
cmd.Parameters.Add("@nC", SqlDbType.VarChar, 100).Value = nC;
cn.Open();
dt.Load(cmd.ExecuteReader());
}
return dt;
}
}
然后在形式上
private void OpCode()
{
if (comboBox1.SelectedIndex < 0)
{
MessageBox.Show("Please select a value in the drop down.");
return;
}
DB DataClass = new DB();
dataGridView1.DataSource = DataClass.GetCountryData(comboBox1.SelectedValue.ToString());
}
private void操作码()
{
如果(comboBox1.SelectedIndex<0)
{
Show(“请在下拉列表中选择一个值”);
返回;
}
DB DataClass=new DB();
dataGridView1.DataSource=DataClass.GetCountryData(comboBox1.SelectedValue.ToString());
}
您在组合框1中是否有值。SelectedValue?如果值不存在,则表示提供硬编码值以查看来自DB的数据。如果(this.IsDisposed)返回,则添加
作为VoucherCountry
方法的第一行。然后将其替换为if(comboBox1.SelectedIndex<0)返回
或if(comboBox1.SelectedValue==null)返回
然后再试。@JQSOFT如果(this.IsDisposed)返回,我对您的评论有点困惑代码>。如果表单被释放,代码将如何运行?@JQSOFT尝试将代码放入selectConnerChanged并关闭表单。代码没有运行。祝您新年快乐。您在组合框1中是否有价值。选择值?如果值不存在,则表示提供硬编码值以查看来自DB的数据。如果(this.IsDisposed)返回,则添加
作为VoucherCountry
方法的第一行。然后将其替换为if(comboBox1.SelectedIndex<0)返回
或if(comboBox1.SelectedValue==null)返回
然后再试。@JQSOFT如果(this.IsDisposed)返回,我对您的评论有点困惑代码>。如果表单被释放,代码将如何运行?@JQSOFT尝试将代码放入selectConnerChanged并关闭表单。代码没有运行。我也祝你新年快乐。@JQSOFT是的,你说得太对了。无法对空值调用.ToString
!我喜欢SelectIndex>=0
谢谢你指出这一点。@JQSOFT是的,你说得太对了。无法对空值调用.ToString
!我喜欢SelectIndex>=0
谢谢你指出这一点。