Help - trouble inserting Integer DS18B20 temperature values in to String

I have a project with arduino uno to read 5 DS18B20 sensors and send it as string to the exosite. all done with standart onewire and exosite libraries - works perfectly. Then I needed to expand my system with 4 aditional sensors. When done, I ran in to SRAM memory shortage and the whole system hanging.. My idea was to "optimize" the code by changing temerature variables from float to integer so I modified the code as folowing:

#include <EEPROM.h>
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Exosite.h>
// Pin use
#define ONEWIRE 7 //pin to use for One Wire interface
// Set up which Arduino pin will be used for the 1-wire interface to the sensor
OneWire oneWire(ONEWIRE);
DallasTemperature sensors(&oneWire);
String cikData = "XXXXXXXXXXXXXXXXXXXXXX"; // <-- FILL IN YOUR CIK HERE! (https://portals.exosite.com -> Add Device)
byte macData[] = {0x22, 0x7A, 0xFE, 0xFC, 0xFE, 0xF2}; // <-- FILL IN YOUR Ethernet shield's MAC address here.
// User defined variables for Exosite reporting period and averaging samples
#define REPORT_TIMEOUT 30000 //milliseconds period for reporting to Exosite.com
#define SENSOR_READ_TIMEOUT 25000 //milliseconds period for reading sensors in loop
class EthernetClient client;
Exosite exosite(cikData, &client);

void setup() {
Serial.begin(9600);
Serial.println("Boot");
// Start up the OneWire Sensors library
sensors.begin();
delay(1000);
Serial.println("Starting Exosite Temp Monitor");
Serial.print("OneWire Digital Pin Specified: ");
Serial.println(ONEWIRE);
Ethernet.begin(macData);
// wait 3 seconds for connection
delay(3000);
}

void loop() {
static unsigned long sendPrevTime = 0;
static unsigned long sensorPrevTime = 0;
int tC;
static float tC2; 
int tC3;
int tC4;
int tC5;
int tC6;
int tC7;
int tC8;
int tC9;
char buffer[7];
String readParam = "";
String writeParam = "";
String returnString = "";
Serial.print("."); // print to show running
// Read sensor every defined timeout period
if (millis() - sensorPrevTime > SENSOR_READ_TIMEOUT) {
Serial.println();
Serial.println("Requesting temperature...");
sensors.requestTemperatures(); // Send the command to get temperatures
tC = sensors.getTempCByIndex(0);
Serial.print("Celsius: ");
Serial.print(tC);
Serial.println(" C ..........DONE");
tC2 = sensors.getTempCByIndex(1);
Serial.print("Celsius2: ");
Serial.print(tC2);
Serial.println(" C ..........DONE");
tC3 = sensors.getTempCByIndex(2);
Serial.print("Celsius3: ");
Serial.print(tC3);
Serial.println(" C ..........DONE");
tC4 = sensors.getTempCByIndex(3);
Serial.print("Celsius4: ");
Serial.print(tC4);
Serial.println(" C ..........DONE");
tC5 = sensors.getTempCByIndex(4);
Serial.print("Celsius5: ");
Serial.print(tC5);
Serial.println(" C ..........DONE");
tC6 = sensors.getTempCByIndex(5);
Serial.print("Celsius6: ");
Serial.print(tC6);
Serial.println(" C ..........DONE");
tC7 = sensors.getTempCByIndex(6);
Serial.print("Celsius7: ");
Serial.print(tC7);
Serial.println(" C ..........DONE");
tC8 = sensors.getTempCByIndex(7);
Serial.print("Celsius8: ");
Serial.print(tC8);
Serial.println(" C ..........DONE");
tC9 = sensors.getTempCByIndex(8);
Serial.print("Celsius9: ");
Serial.print(tC9);
Serial.println(" C ..........DONE");
sensorPrevTime = millis();
}
// Send to Exosite every defined timeout period
if (millis() - sendPrevTime > REPORT_TIMEOUT) {
Serial.println(); //start fresh debug line
Serial.println("Sending data to Exosite...");
readParam = ""; //nothing to read back at this time e.g. 'control&status' if you wanted to read those data sources
writeParam = "t="; //parameters to write e.g. 'temp=65.54' or 'temp=65.54&status=on'
//String tempValue = dtostrf(tC, 1, 2, buffer); // convert float to String, minimum size = 1, decimal places = 2
writeParam += tC; //add converted temperature String value
//writeParam += "&message=hello"; //add another piece of data to send
//--
writeParam +="&t2=";
//tempValue = dtostrf(tC2, 1, 2, buffer);
String tempValue = dtostrf(tC2, 1, 2, buffer);
writeParam += tempValue;
//--
writeParam +="&t3=";
writeParam += tC3;
//--
writeParam +="&t4=";
writeParam += tC4;
//--
writeParam +="&t5=";
writeParam += tC5;
//--
writeParam +="&t6=";
writeParam += tC6;
//--
writeParam +="&t7=";
writeParam += tC7;
//--
writeParam +="&t8=";
writeParam += tC8;
//--
writeParam +="&t9=";
writeParam += tC9;
Serial.println("Exosite String");
Serial.println(writeParam);
//--
if ( exosite.writeRead(writeParam, readParam, returnString)) {
Serial.println("Exosite OK");
if (returnString != "") {
Serial.println("Response:");
Serial.println(returnString);
}
}
else {
Serial.println("Exosite Error");
}
sendPrevTime = millis(); //reset report period timer
Serial.println("done sending.");
}
delay(1000); //slow down loop
}

and then I got this (picture attached)

I cant figure out why all the temperature sensors as integers show the right temperature, but when they are added to the string they change.. what am I missing?

String cikData = "XXXXXXXXXXXXXXXXXXXXXX"; // <-- FILL IN YOUR CIK HERE! (https://portals.exosite.com -> Add Device)

There is no need to piss away resources on the String class. There is NOTHING that the String class offers over a standard C string (a NULL terminated array of chars).

Serial.println("Starting Exosite Temp Monitor");

There is no need to let the string literals occupy SRAM. Keep them out by using the F() macro:
Serial.println(F("Starting Exosite Temp Monitor"));

Look up sprintf() to create a single string to send to exosite, instead of a String

As PaulS tells it only louder get rid of the C++ Strings and use C string arrays instead.

Other things you can do:

Use the F() macro to print constant strings direct from flash, uses no RAM.

Serial.print( F( " ** This print uses no RAM. ** " );

I see you only read 1 temperature at a time so why not print each before reading the next?
Do it right and you can get away with only needing 1 int for however many sensors you have.
It will also save you from having to buffer a long string to print them all at once.
It's not like a line of serial data has to a print all at once, because serial can wait between chars.
If you need to operate on those values then figure out how to do that in steps.