我的运行时错误为“必须声明标量变量@name”
public partial class UserMainPage : System.Web.UI.Page
{
string strConnString = ConfigurationManager.ConnectionStrings["FindConnectionString"].ConnectionString;
string str;
SqlCommand com;
protected void Page_Load(object sender, EventArgs e)
{
label1.Text = Session["name"].ToString();
string name = label1.Text;
SqlConnection con = new SqlConnection(strConnString);
con.Open();
str = "select balanceamount from wallet where username LIKE '%'+@name+'%'";
com = new SqlCommand(str, con);
SqlDataReader reader = com.ExecuteReader();
reader.Read();
walletbalance.Text = reader["balanceamount"].ToString();
reader.Close();
con.Close();
}
}
答案 0 :(得分:2)
使用参数化而不是串联字符串查询来感谢try。但是在执行命令之前忘记将参数添加到命令中。这导致了这里的问题。您可以使用以下代码将值添加到指定的参数;
str = "select balanceamount from wallet where username LIKE @name";
com = new SqlCommand(str, con);
com.Parameters.AddWithValue(@name, "%" + name + "%");
SqlDataReader reader = com.ExecuteReader();
// Process with reader
答案 1 :(得分:2)
要使用SqlCommand
中的参数,您应该将它们添加到Parameters
字典(see MSDN docs)中:
com.Parameters.Add("@name", "JohnSmith");
将%
移动到字符串值以避免运行时连接也是有意义的:
com.Parameters.Add("@name", "%JohnSmith%");
如果您的代码中包含一个包含名称的字符串变量(您确实拥有它),那么:
string name = (string) Session["name"];
com.Parameters.Add("@name", $"%{name}%");