在 SQL Server 中,ID 是一个非空整数和一个标识。
当我运行以下代码时,我在最后一行得到一个 InvalidCastException:
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();
ExecuteScalar() 在这里返回什么?无论它返回什么都有一个 ToString() 使它看起来像一个数字,所以这行可怕的代码行得通:
int id = Int32.Parse(cmd.ExecuteScalar().ToString());