1

そのため、データベースからデータを取得して出力する関数があります。処理する行が不足することによるエラーが処理されるように、try ブロックに入れられます。

以下は、ロード時に呼び出され (初期出力を作成するため)、後でログ ボックスを更新するために呼び出される関数です。

問題は、関数を再度呼び出すたびに、データが 2 回出力されることです。データのみが try ブロックにあり、ヘッダーには含まれていないため、これは 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 に答える