从代码传递变量到存储过程

4

我正在向存储过程传递一个值,但它一直给我一个错误,说数据类型 nvarchar 无法转换为 int。如何更改以消除错误?以下是我的实际调用和存储过程:

private static string ReturnPhoneNumber()
{
string username = "Roy Orbinson";
string databaseConnection = "Data Source=EmployeeServer;Initial Catalog=StoreInfo;Integrated Security=True;MultipleActiveResultSets=True"; 
SqlConnection connection = new SqlConnection(databaseConnection);
SqlCommand command = new SqlCommand("GimmeThatPhoneNumber", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@username", username);

connection.Open();
var result = Convert.ToString(command.ExecuteScalar());
connection.Close();

return result;
}

SQL:

[dbo].[GimmeThatPhoneNumber]
(
@username int
)

as

Set NoCount On

SELECT phonenumber
FROM personelinformation
where employeename = @username
2个回答

8
问题在于您的输入参数是int类型,但需要是字符串类型:
[dbo].[GimmeThatPhoneNumber]
(
    @username int
)

@username 应该是:

@username nvarchar(200) --pick an appropriate size

也有可能参数是用户ID(而不是名称),代码需要首先查找与该用户名相关联的用户ID。 - Gus

0

你正在传递值为username的@username。但是变量username是一个字符串,在你的存储过程中,你将@username定义为整数。 你应该将过程中@username的类型更改为nvarchar或将字符串username转换为int。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接