2017-05-21 99 views
0

數據從serial port接收,但未與聲明字符串進行比較,我想更新數據庫記錄表中的unit_consumed字段。 while循環也在工作。我想知道串行數據如何與字符串進行比較,然後更新數據庫字段。來自串行端口但數據庫未更新的數據

int unit = 0; 
     string s = "unit_consumed"; 
     SerialPort myport = new SerialPort(); 
     myport.BaudRate = 9600; 
     myport.PortName = "COM4"; 
     myport.Open(); 
     while(true) 
     { 
      string data_rx = myport.ReadLine(); 
      File.AppendAllText("test_file.txt", data_rx + "\n"); 
      unit = unit + 1; 
      if (string.Equals(data_rx,s)) 
      { 
       SqlConnection con = new SqlConnection("Data Source=MIAN\\SQLEXPRESS;Initial Catalog=arduino;Integrated Security=True"); 
       con.Open(); 
       SqlCommand cmd = new SqlCommand("insert into record(unit_consumed) values(@unit_consumed) ", con); 
       cmd.Parameters.AddWithValue("@unit_consumed", unit); 
       con.Close(); 
      } 
      Console.WriteLine(data_rx); 
+0

有你驗證了該'string.Equals(DATA_RX,S)'是真的嗎? –

+0

string.equals(data_rx,s)也不起作用。數據也寫在文本文件中,它包含unit_consumed行,但我不知道爲什麼strings.equals不工作。 –

+0

它應該嘗試將「if(string.Equals(data_rx,s))」更改爲「if(data_rx.ToLower()。Contains(s))」以確保沒有任何東西丟失 –

回答

0

您不執行您的查詢。

嘗試:

SqlConnection con = new SqlConnection("Data Source=MIAN\\SQLEXPRESS;Initial Catalog=arduino;Integrated Security=True"); 
con.Open(); 
SqlCommand cmd = new SqlCommand("insert into record(unit_consumed) values(@unit_consumed) ", con); 
cmd.Parameters.AddWithValue("@unit_consumed", unit); 

// ********** need to execute 
cmd.ExecuteNonQuery(); 

con.Close();