2016-05-02 4 views
0

Ich bin neu hier und ich brauche Hilfe. Ich hoffe, ihr könnt mein Problem lösen.Lesen Sie die Textdatei in C# und senden Sie die Daten an mysql query

Ich habe erfolgreich einen Windows-Dienst erstellt, der Daten vom Server (Uhrzeit und Datumsstempel) mithilfe von Timer sendet. Das einzige, was mich daran hindert, ist die Textdatei. Ich möchte die Daten in der Textdatei als meinen "wo Befehl" unter dem Befehl mysql verwenden. siehe

den Code unten:

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Diagnostics; 
using System.Linq; 
using System.ServiceProcess; 
using System.Text; 
using System.Timers; 
using System.Threading.Tasks; 
using MySql.Data.MySqlClient; 

namespace bicmwinservice 
{ 
    public partial class Service1 : ServiceBase 
    { 
     public Service1() 
     { 
      InitializeComponent(); 
     } 

     public void OnDebug() 
     { 
      OnStart(null); 
     } 

     private Timer count; 

     protected override void OnStart(string[] args) 
     { 

      count = new Timer(1 * 60 * 1000); // 5 minutes expressed as milliseconds 
      count.Elapsed += new ElapsedEventHandler(OnTimerElapsed); 
      count.AutoReset = true; 
      count.Start(); 

     } 

     protected override void OnStop() 
     { 
      System.IO.File.Create(AppDomain.CurrentDomain.BaseDirectory + "OnStop.txt");   
     } 

     private void OnTimerElapsed(object sender, ElapsedEventArgs e) 
     { 


       DateTime time = DateTime.Now; 
       DateTime date = DateTime.Now; 


       string connString = "Server=mysql1003.mochahost.com;Database=snowphil_tester;Uid=snowphil_test;password=snowphil_test;"; 
       MySqlConnection conn = new MySqlConnection(connString); 
       MySqlCommand command = conn.CreateCommand(); 


       StreamReader read = new StreamReader(@"C:\brcode.txt", Encoding.Default); 

       command.CommandText = "Update branch_monitor SET `date`='" + date.ToString("yyyy'-'MM'-'dd") + "', `time`= '" + time.ToString("HH':'mm':'ss") + "' WHERE branch_code='" + read + "'"; 
       conn.Open(); 
       command.ExecuteNonQuery(); 

       conn.Close(); 

     } 

    } 
} 

wenn ich die WHERE = "" mit aktuellen Daten ersetzen, die ich will. Der Code funktioniert und sendet Daten auf dem Server.

Danke Jungs! fröhliche Codierung.

Antwort

0

diese

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Diagnostics; 
using System.Linq; 
using System.ServiceProcess; 
using System.Text; 
using System.Timers; 
using System.Threading.Tasks; 
using MySql.Data.MySqlClient; 

namespace bicmwinservice 
{ 
    public partial class Service1 : ServiceBase 
    { 
     public Service1() 
     { 
      InitializeComponent(); 
     } 

     public void OnDebug() 
     { 
      OnStart(null); 
     } 

     private Timer count; 

     protected override void OnStart(string[] args) 
     { 

      count = new Timer(1 * 60 * 1000); // 5 minutes expressed as milliseconds 
      count.Elapsed += new ElapsedEventHandler(OnTimerElapsed); 
      count.AutoReset = true; 
      count.Start(); 

     } 

     protected override void OnStop() 
     { 
      System.IO.File.Create(AppDomain.CurrentDomain.BaseDirectory + "OnStop.txt");   
     } 

     private void OnTimerElapsed(object sender, ElapsedEventArgs e) 
     { 


       DateTime time = DateTime.Now; 
       DateTime date = DateTime.Now; 


       string connString = "Server=mysql1003.mochahost.com;Database=snowphil_tester;Uid=snowphil_test;password=snowphil_test;"; 
       MySqlConnection conn = new MySqlConnection(connString); 
       MySqlCommand command = conn.CreateCommand(); 

       string read = File.ReadAllText(@"C:\brcode.txt"); 


       command.CommandText = "Update branch_monitor SET `date`='" + date.ToString("yyyy'-'MM'-'dd") + "', `time`= '" + time.ToString("HH':'mm':'ss") + "' WHERE branch_code='" + read + "'"; 
       conn.Open(); 
       command.ExecuteNonQuery(); 

       conn.Close(); 

     } 

    } 
} 
+0

Hallo Mostafizur! Ich weiß deine schnelle Antwort sehr zu schätzen, aber der Code hat nicht funktioniert. Vielen Dank. – gcarlopadua

+0

ist es nicht lesen Textdatei oder einen anderen Fehler? – Mostafiz

+0

Entschuldigung, ich habe nicht erwähnt, der Code hat den Text in der Textdatei nicht gelesen. Der Text in der Textdatei ist 0099. Danke! – gcarlopadua

0

Fragen Versuchen:

  1. Does Du Quelldatei mehr Zeilen haben? d.h.

    0099 
    0100 
    0101 
    
  2. ODER ist es 2 Zeilen mit einer leeren zweiten Zeile? Wenn dies der Fall werden, die Sie tatsächlich bekommen

    0099\n 
    

Lösungen:

  1. Mulitple Linien

    foreach (string line in File.ReadAllLines(@"C:\brcode.txt")) 
    { 
        [your sql connection code] 
        "... WHERE branch_code='" + line + "';" 
    } 
    
  2. Vielleicht brauchen Sie nur die Zeilenumbrüche zu trimmen, wenn Sie erwarten eine einzelne Zeile in der Quelldatei:

    string line = File.ReadAllText(@"C:\brcode.txt").Trim(); 
    
+0

Hallo Grinknok! Ich habe nur eine Zeile auf meiner Quelle. Ich habe beides versucht, aber kein Glück. Danke! – gcarlopadua

+0

Hallo Griknok! Es funktionierte! Was ich getan habe ist, dass ich die Textdatei auf das andere Laufwerk übertragen habe, das ist D: und es hat funktioniert !! Vielen Dank an Sie und auch an Moztafizur. – gcarlopadua

Verwandte Themen