1

所以我有一个从数据库中检索数据并输出的函数。它被封装在一个 try 块中,以便处理从用完行到处理的错误。

这是加载时调用的函数(生成初始输出),稍后调用以更新日志框。

问题是,每当我再次调用该函数时,它都会输出两次数据。由于只有数据在 try 块中,而不是 headers,这表明 try / catch 是问题所在。

为凌乱/骇人的代码道歉:

    private void NavigateRecords()
    {
        da.Fill(ds1, "LogOutput");
        textlog4.Text = "Date \t\t Time \t\t Floor\r\n";
        try
        {
            for (int i = 0; i <= 20; i++)
            {
                DataRow dRow = ds1.Tables["LogOutput"].Rows[i];
                for (int i2 = 1; i2 <= 3; i2++)
                {
                    textlog4.Text += dRow.ItemArray.GetValue(i2).ToString() + "\t\t";
                }
                textlog4.Text += "\r\n";

            }
        }
        catch { textlog4.Text += "----------------------"; }  
    }

这是执行部分连接的代码,可能有用:

        string sql = "SELECT * From tblLog";
        da = new System.Data.SqlClient.SqlDataAdapter(sql, con);
        NavigateRecords();

初始输出:

Date         Time        Floor
6/12        18:18:22        1       
----------------------

下次调用时输出:

Date         Time        Floor
6/12        18:18:22        1       
6/12        18:46:19        2       
6/12        18:18:22        1       
6/12        18:46:19        2       
----------------------
4

1 回答 1

7

它不是您的 try catch 的问题,而是您的变量的问题。在向变量添加新数据之前清除变量。我没有看到您在方法范围内声明的变量,因此它保留了您最初放入其中的数据。

于 2012-12-06T18:54:29.957 回答