Pat*_*tty 5 c# sql-server ado.net scope-identity
在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();
Run Code Online (Sandbox Code Playgroud)
什么是ExecuteScalar()在这里返回?无论它返回什么,都有一个ToString()使它看起来像一个数字,所以这个可怕的代码行工作:
int id = Int32.Parse(cmd.ExecuteScalar().ToString());
Run Code Online (Sandbox Code Playgroud)
Ant*_*ram 10
SCOPE_IDENTITY()返回decimal代码,也称为NUMERIC(38,0)TSQL.
http://msdn.microsoft.com/en-us/library/ms190315.aspx
所以,如果你想要直接演员,你可以做到(int)(decimal)cmd.ExecuteScalar();.请注意,十进制到int转换可能会在最严格的意义上丢失信息,因此请注意.但是,如果您的标识列是整数,则转换将是安全的.
| 归档时间: |
|
| 查看次数: |
6335 次 |
| 最近记录: |