我正在做
string sql = "select * from publisher where title like "'"+tbproperty.text+";
但它不起作用!
问候..
答案 0 :(得分:9)
使用SqlParameter
:
SqlCommand cmd = new SqlCommand("select * from publisher where title like @title");
cmd.Parameters.AddWithValue("@title", tbProperty.Text);
如果您需要在参数中添加更多内容,请执行以下操作(例如:输出参数):
SqlParameter param = new SqlParameter("@param ", SqlDbType.NVarChar, 250) { Direction = ParameterDirection.Output };
cmd.Parameters.Add(param);
这意味着您不需要构建字符串本身并停止SQL注入。
答案 1 :(得分:4)
使用LIKE
,如果您希望开始/结束匹配,则需要一些通配符,例如'%'
,而我假设用户没有添加那些;但是 - 重要:don't concatenate user input。永远。你想要的东西:
sql = "select * from publisher where title like @arg";
将@arg
定义为参数,其值类似于:
cmd.Parameters.AddWithValue("@arg", "%" + tbproperty.text + "%");
答案 2 :(得分:0)
校正..
string sql = "select * from publisher where title like '" + tbproperty.text + "'";