2017-08-08 20 views
0

C開かれて閉じられていませんでした...接続は、私は、接続は、接続の現在の状態を閉じていなかった ことを私に言って、そのキープが開い</p> <p>任意のヘルプしてくださいあるタイマーでこの関数を呼び出したときに、接続の現在の状態は、#

public static void Notify(string source, string query, ref OleDbConnection connection) 
    { 
     OleDbCommand command = new OleDbCommand(query, connection); 
     try 
     { 
      connection.Open(); 
      OleDbDataReader reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       DateTime date = DateTime.Parse(reader[0].ToString()); 
       if (date.ToShortDateString() == DateTime.Now.ToShortDateString()) 
       { 
        DateTime time = DateTime.Parse(reader[1].ToString()); 
        if (time.ToShortTimeString() ==DateTime.Now.ToShortTimeString()) 
        { 
         string notification = source + " You have " + reader[2].ToString() + " at " + (time.ToLongTimeString()).ToString(); 

         MessageBox.Show(notification, "Reminder", MessageBoxButtons.OK, MessageBoxIcon.Information); 

        } 
       } 
      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      connection.Close(); 
     } 
    } 
+0

どのライン? – tchelidze

+2

他の場所で接続を使用していますか?あなたはそれをref-parameterとして提供するので、それを使用する唯一の時間ではないかもしれません。 – Karl

+0

エラー文法はありません。時刻が正しいとき(時刻は.nowとなります) そのメッセージを60秒以上繰り返します。 時刻が正しくないときに停止することを教えてください –

答えて

2

メッセージに示されているように、あなたの接続はすでに開いています。これは、「通知」を呼び出す前に既に

connection.Open(); 

と呼ばれていることを意味します。その場合、コードをチェックしてください。それが役に立てば幸い。

+0

人、この関数は一度だけ実行し、例外は –

+0

のコードをデバッグしようとします。 connection.Open()が呼び出された行にブレークポイントを設定し、何が起こるかを確認します。この行に達したときにシステムにエラーが表示された場合は、前述のように接続が既に開いていることを意味します。あなたがそれについてのより多くの情報を必要とするなら私に知らせてください –

関連する問題