小编Pat*_*tty的帖子

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

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

c# sql-server ado.net scope-identity

5
推荐指数
2
解决办法
6335
查看次数

标签 统计

ado.net ×1

c# ×1

scope-identity ×1

sql-server ×1