Какой тип данных возвращает метод SQLCommand ExecuteScalar ()?

В SQL Server идентификатор - это не пустое целое число, а идентификатор.

Когда я запускаю следующий код, я получаю 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());
5
задан John Sansom 19 October 2010 в 07:55
поделиться