2016-07-13 19 views
0

C#でWindowsサービスを作成しようとすると、指定したSQLサーバーデータベースから読み取ったデータに基づいて電子メールが自動的に送信されます。WindowsサービスC#データベース接続の問題

私は自動的に電子メールを送信するようにサービスを実行するように管理しましたが、sqlconnectionサービスを挿入しようとするともう機能しません。 アイデア

SqlConnectionとデータリーダーを削除すると機能します。

System.Timers.Timer createOrderTimer; 
    public Service1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     createOrderTimer = new System.Timers.Timer(); 
     createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail); 
     createOrderTimer.Interval = 2500; 
     createOrderTimer.Enabled = true; 
     createOrderTimer.AutoReset = true; 
     createOrderTimer.Start(); 
    } 
    protected override void OnStop() 
    { 
    } 
    public void GetMail(object sender, System.Timers.ElapsedEventArgs args) 
    { 
     SqlConnection connect = new SqlConnection("Server=10.222.160.17,5356;" 
      + "Database=tracking_tool;" 
      + "Trusted_Connection=True;" 
      + "user=admin;" 
      + "password=root"); 

     string line = ""; 
     connect.Open(); 
     SqlCommand GetData = new SqlCommand("select * from validation", connect); 
     SqlDataReader ReadData = null; 
     ReadData = GetData.ExecuteReader(); 

     while (ReadData.Read()) 
     { 

      line = ReadData["Line"].ToString(); 

     } 
     connect.Close(); 

     MailMessage mailMessage = new MailMessage(); 
     mailMessage.To.Add("[email protected]"); 
     mailMessage.From = new MailAddress("[email protected]"); 
     mailMessage.Subject = "example"; 
     mailMessage.Body = "example"; 
     SmtpClient smtpClient = new SmtpClient("10.214.81.97"); 
     smtpClient.Send(mailMessage); 
    } 
+1

あなたはエラーが発生していますか? – Ted

+0

あなたは例外を取得しています、これは多くの問題を調査するのに役立つかもしれません。また、接続文字列が正しいことを確認していますか? ipにカンマがあります。私は専門家ではありませんが、私はこれまでに遭遇したことはありません。 –

+1

Trusted_Connection = Trueは、ユーザー名とパスワードを隠し、サービス中であるため、サービスを実行するユーザーはSQL Server認証に提示されます。私はTrusted_Connectionを削除しようとし、ユーザ名とパスワードを使用します。 – Steve

答えて

1

あなたは変数ラインにSQLからデータを読んでいるが、その後、あなたはそれで何もしない:

は、ここに私のコードです。私の推測は、実際には何も間違っていないということです。何かがうまくいかないとあなたはどのように判断していますか?

+0

電子メールが自動的に送信されないためです。私がデータを読み込む行をコメントすると、Windowsサービスは電子メールを送信します。 (その読者はテストのためのもので、何が問題なのかを表示します) –

+0

メールを送信しないと、例外が発生しています。例外処理コードが表示されないため、サービスを停止して、Windowsイベントログにエラーメッセージが表示されるはずです。 –

+0

必ずしもそうではありません。メールはSQLデータとは無関係に送信されますが、これは私の答えで意味したものです。私はあなたがデータを取得していると思う、それはあなたの行に格納され、それからメールを送信し続けます。今私はあなたがメールを受け取っていないと理解していますが、その場合の問題はあなたのdbコードではなくメール部分を送ることにあります。 line = Readdata部分にブレークポイントを挿入して、それが満たされているかどうかを調べることができます。しかし、テッドのように、あなたはそれを上書きしています。テーブルに行が1つしかないのにイベントが発生します。 –

0

ConnectionStringが間違っています。これを試してください:

server={YourSqlInstanceFullName};database={YourDatabaseName};Integrated Security=false;User ID={Database Username};Password={Password} 
関連する問題