Föreslå att du gör detta i din kod bakom innan du skickar ner till SQL Server.
int userVal = int.Parse(txtboxname.Text);
Försök kanske att analysera och eventuellt låta användaren veta det.
int? userVal;
if (int.TryParse(txtboxname.Text, out userVal)
{
DoSomething(userVal.Value);
}
else
{ MessageBox.Show("Hey, we need an int over here."); }
Undantaget du noterar betyder att du inte inkluderar värdet i anropet till den lagrade proc. Försök att ställa in en felsökningsbrytpunkt i din kod när du anropar ner till koden som bygger anropet till SQL Server.
Se till att du faktiskt bifogar parametern till 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();
}
Kanske starta SQL Profiler på din databas för att inspektera SQL-satsen som skickas/exekveras.