Предложете да направите това във вашия код-зад, преди да изпратите до SQL Server.
int userVal = int.Parse(txtboxname.Text);
Може би опитайте да анализирате и по желание да уведомите потребителя.
int? userVal;
if (int.TryParse(txtboxname.Text, out userVal)
{
DoSomething(userVal.Value);
}
else
{ MessageBox.Show("Hey, we need an int over here."); }
Изключението, което отбелязвате, означава, че не включвате стойността в извикването към съхранената процедура. Опитайте да зададете точка на прекъсване за отстраняване на грешки в кода си в момента, в който извиквате кода, който изгражда извикването към SQL Server.
Уверете се, че всъщност прикачвате параметъра към SqlCommand.
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.Add("@ParamName", SqlDbType.Int);
cmd.Parameters["@ParamName"].Value = newName;
conn.Open();
string someReturn = (string)cmd.ExecuteScalar();
}
Може би стартирайте SQL Profiler във вашата база данни, за да проверите SQL израза, който се изпраща/изпълнява.