gpt4 book ai didi

c# - SQLCommand 方法 ExecuteScalar() 返回什么数据类型?

转载 作者:太空狗 更新时间:2023-10-29 22:20:42 27 4
gpt4 key购买 nike

在 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());

最佳答案

SCOPE_IDENTITY() 在代码中返回一个 decimal,在 TSQL 中也称为 NUMERIC(38,0)

http://msdn.microsoft.com/en-us/library/ms190315.aspx

因此,如果您想要直接转换,可以执行 (int)(decimal)cmd.ExecuteScalar();。请注意,十进制到整数的转换可能会丢失最严格意义上的信息,因此请注意。但是由于您的身份列是整数,转换将是安全的。

关于c# - SQLCommand 方法 ExecuteScalar() 返回什么数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com