So, you might want to write something like this:
long runningTotal = 0;
while (rd.Read())
{
string sati = string.Empty;
if (!rd.IsDBNull(rd.GetOrdinal("SATI"))
{
int satiVal = rd.GetInt32(rd.GetOrdinal("SATI"));
runningTotal += satiVal;
sati = satiVal.ToString();
}
string vrijeme = rd.IsDBNull(rd.GetOrdinal("VRIJEME")) ? string.Empty : rd.GetString(rd.GetOrdinal("VRIJEME"));
usersNB.Add(new userNB{ Vrijeme = vrijeme, Osoba = rd.GetString("OSOBA"), sati });
}
All you're doing is keeping a running total as you step through the reader. The reason that runningTotal is long rather than int is just to cater for overflowing the maximum or minimum (underflow) value.