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

C# 将变量从代码传递到存储过程,c#,asp.net,sql-server-2008,stored-procedures,C#,Asp.net,Sql Server 2008,Stored Procedures,我正在向存储过程传递一个值,但它不断给我一个将数据类型nvarchar转换为int时出错的错误。需要修改什么来删除该错误?下面是我的实际调用和存储过程 private static string ReturnPhoneNumber() { string username = "Roy Orbinson"; string databaseConnection = "Data Source=EmployeeServer;Initial Catalog=StoreInfo;Integrated Sec

我正在向存储过程传递一个值,但它不断给我一个将数据类型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:


问题是您的输入参数具有
int
类型,但必须是字符串类型:

[dbo].[GimmeThatPhoneNumber]
(
    @username int
)
@username
应为:

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

您正在传递带有username值的@username。但是您可以将变量username定义为字符串,并在存储过程中将@username定义为整数。
您应该将过程中@username的类型更改为nvarchar,或者将字符串username转换为int。

参数也可能是userid(vs name),代码需要首先查找与该用户名关联的userid
@username nvarchar(200) --pick an appropriate size