2017-05-21 62 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();