Du exekverar queryn och får en reader tillbaks, men du säger aldrig åt den att hämta nästa rad (första raden) från resultatet.
Kod:
SqlDataReader rdr = SQLCom.ExecuteReader();
if (rdr.Read()) // Kolla att det finns data (false if not), och stega fram readern dit.
{
ReturnValues = rdr[0].ToString();
}
I ditt andra exempel genererar du en Guid för att sedan skriva över den med ett nytt värde:
Kod:
Guid UserID = new Guid();
UserID = Guid.Parse(Convert.ToString(SQLCom.ExecuteScalar()));
Varför inte bara
Guid UserID = ....? Liten mikrooptimering där....
Fundera även lite på vad som händer om queryn inte returnerar någon data.
Sen undrar jag varför du klonar ditt SqlCommand på sista raden i ditt första exempel....
Och för guds skull, använd parameteriserade queries istället för att konkatenera strängar.