后端数据库:访问。有未处理的异常破坏了应用程序。我正在尝试使用 Try/Catch/Finally,并尝试使用该应用程序一次识别一个代码错误。可能有很多地方导致未处理的异常,但我想其中一些是类似的问题。我只是四处玩耍并修复我找到的位置。
这里是第一个导致异常错误的地方。让我解释一下我是如何来到这里的。首先,我点击ChildForm1 buttonXYZ,查询没有返回记录;然后我单击父窗体 menustrip 按钮并尝试打开 ChildForm2。错误出现在 ChildForm2_Load 行 Cn.Open。这是错误截图。
出了什么问题,如何解决?
谢谢。
//First, I click ChildForm1 buttonXYZ, and the query returns no record
private void buttonXYZ_Click(object sender, EventArgs e)
{
try
{
Cn.Open();
string sqlStr = "SELECT ......";
adapt = new OdbcDataAdapter(sqlStr, Cn);
dt = new DataTable();
adapt.Fill(dt);
dgvABC.DataSource = dt;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
MessageBox.Show(ex.Message);
}
finally
{
Cn.Close();
}
}
//Then I click parent form menustrip button and try to open ChildForm2
private void OpenChildForm2ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (ActiveMdiChild != null)
ActiveMdiChild.Close();
ChildForm2 childForm2 = new ChildForm2();
childForm2.MdiParent = this;
childForm2.WindowState = FormWindowState.Maximized;
childForm2.Show();
}
答案 0 :(得分:0)
您在创建适配器之前打开了一个连接。使用此代码:
var sqlStr = "SELECT ......";
DataTable dt = new DataTable();
using (cn =
new OdbcConnection(ConnectionString))
{
using (OdbcDataAdapter adapt =
new OdbcDataAdapter(sqlStr , cn))
{
adapt.Fill(dt);
dgvABC.DataSource = dt;
}
}
}
答案 1 :(得分:0)