C# - SQLite更新查询无法正常工作

时间:2015-04-09 15:41:30

标签: c# sqlite

我将开始这个问题,说我知道这不是使用SQLite语句的最佳方式,但在学习时对我来说更容易。这是我的代码的一部分:

int horas1, minutos1, segundos1, horas2, minutos2, segundos2;
pausaString = "No";
TimeSpan ts = turriStopWatch.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds);
MessageBox.Show(elapsedTime, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
string sql = "select tiempoPausado from Registros where pausado = 'SI' and enCurso = 'SI' and operacion = '" + operacionString + "' and operador = '" + operadorString + "'";
command = new SQLiteCommand(sql, conexion);
using (SQLiteDataReader reader2 = command.ExecuteReader())
   {
      if (reader2.Read())
      {
         string tiempoGuardado = reader2.GetString(0);

         horas1 = Convert.ToInt16(tiempoGuardado.Substring(0, 2));
         minutos1 = Convert.ToInt16(tiempoGuardado.Substring(3, 2));
         segundos1 = Convert.ToInt16(tiempoGuardado.Substring(6, 2));

         horas2 = Convert.ToInt16(elapsedTime.Substring(0, 2));
         minutos2 = Convert.ToInt16(elapsedTime.Substring(3, 2));
         segundos2 = Convert.ToInt16(elapsedTime.Substring(6, 2));
         //MessageBox.Show(horas2 + ";" + minutos2 + ";" + segundos2, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

         int sumaHoras = horas1 + horas2;
         int sumaMinutos = minutos1 + minutos2;
         int sumaSegundos = segundos1 + segundos2;

         while (sumaSegundos >= 60) 
         {
            sumaMinutos = sumaMinutos + 1;
            sumaSegundos = sumaSegundos - 60;
         }
         while (sumaMinutos >= 60) 
         {
            sumaHoras = sumaHoras + 1;
            sumaMinutos = sumaMinutos - 60;
         }

         string horarioAGuardar = String.Format("{0:00}:{1:00}:{2:00}", sumaHoras, sumaMinutos, sumaSegundos);

         //MessageBox.Show(horarioAGuardar, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

         sql = "update Registros set tiempoPausado = '" + horarioAGuardar + "' AND pausado = 'NO' where enCurso = 'SI' AND operador = '" + operadorString + "' AND operacion = '" + operacionString + "'";
         command = new SQLiteCommand(sql, conexion);
         int rows = command.ExecuteNonQuery();
         MessageBox.Show(rows.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
      }

      else
      {

      }

}

小时计算工作正常但是,假设tiempoAGuardar是“00:00:02”,我在tiempoPausado从我的数据库得到的是“0”而pausado没有改为'NO'。即使我用“asd”更改tiempoAGuardar,它也会在数据库中存储0。请帮忙,我一直试图解决这个问题。感谢

1 个答案:

答案 0 :(得分:0)

UPDATE语句的语法错误。

你有这个:

"update Registros set tiempoPausado = '" + horarioAGuardar + "' AND pausado = 'NO'

您需要用逗号替换AND

"update Registros set tiempoPausado = '" + horarioAGuardar + "', pausado = 'NO'

最有可能将AND pausado = 'NO'解析为表达式的一部分,该表达式将被评估以形成tiempoPausado的最终值。