Char Array + String

Tato84:
No sera mejor usar snprintf o en este caso no se puede utilizar?

Se puede, solo que si hay recortes en el texto no sería del todo "bonito".
En este caso, el límite de caracteres sería de 128 - 80.

jazpiroz:

double hum = 1;

double temp = 10;
 double humsuelo= 15;
 String emisor = "Emisor";





Como sería??, se puede igual???

Para efectos de sprintf, depende de cómo quieras presentar los datos numéricos. Puedes convertirlos a enteros, pero para presentarlos con decimales... por alguna razón no lo soporta, imprime "???" en vez del valor. Hay dos formas de sobrellevar dicho problema:

  • Con String.
  • Con dtostrf.

Para concatenar cadenas de caracteres con sprintf, estos deben ser punteros de char (se coloca el nombre de la variable de tipo char* o un vector de este). Por esta razón, se utiliza c_str() cuando se introduce un objeto String (o de lo contrario habría error de compilación).

jazpiroz:

String valores = "INSERT INTO sql10237370.DATOS (HUMEDAD,TEMPERATURA,HUMEDADSUELO,EMISOR) VALUES (";

valores = valores +hum;
  valores = valores + ',';
  valores = valores + temp;
  valores = valores + ',';
  valores = valores + humsuelo;
  valores = valores + ',';
  valores = valores +"'"+emisor+"')";
  Serial.println(valores);

char INSERT_SQL[128] = " ";
  sprintf(INSERT_SQL,valores.c_str());

Gasto innecesario de memoria (RAM). Si en valores ya tienes la sentencia completa (llamarlo "query" sería extraño porque realmente no se está consultado), no sería mejor usarlo así como está.
Recuerda, si al insertarlo en el parámetro de una función te genera error de compilación, prueba llamando a c_str().