In SQL Server, ID è un numero intero non nullo e un'identità.Quale tipo di dati restituisce il metodo SQLCommand ExecuteScalar()?
Quando eseguo il seguente codice, ottengo un'InvalidCastException sull'ultima riga:
SqlCommand cmd = new SqlCommand();
cmd.Connection = _conn;
cmd.CommandText = @"INSERT INTO [Users] (Name, Email, Password) VALUES (@name, @email, @pass); SELECT SCOPE_IDENTITY()";
cmd.Parameters.AddWithValue("@name", newUser.Name);
cmd.Parameters.AddWithValue("@email", newUser.Email);
cmd.Parameters.AddWithValue("@pass", newUser.PasswordHash);
int id = (int)cmd.ExecuteScalar();
Qual è ExecuteScalar() tornare qui? Qualunque sia la sua ritorno ha un ToString(), che lo fa apparire come un numero, in modo da questa linea terribile di codice funziona:
int id = Int32.Parse(cmd.ExecuteScalar().ToString());
Cosa succede se chiami 'GetType()'? – SLaks
Wow, perché non ci ho pensato? Restituisce un decimale. Grazie. – Patty