现在我在数据库中执行搜索并使用
显示结果string keyWord = textBoxSearch.Text.ToString();
using (SqlConnection con = new SqlConnection(conString))
{
try
{
con.Open();
if (con.State == ConnectionState.Open)
{
using (SqlCommand cmd = new SqlCommand("SELECT articleCode, articleName FROM Article WHERE articleName LIKE '" + keyWord + "%'", con))
{
// Put search result in dataGrid
}
}
}
}
现在关注SqlCommand.Parameters
示例,我应该执行类似
string cmdQuery = "SELECT articleCode, articleName from Article WHERE articleName LIKE @articleName'";
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlCommand cmd = new SqlCommand(cmdQuery, con))
{
cmd.Parameters.Add("@articleName", SqlDbType.NVarChar);
cmd.Parameters["@articleName"].Value = textBoxSearch.Text;
try
{
// Put search result in dataGrid
}
}
}
但我真的不明白这有多么不同,因为我仍然需要使用原始的textBoxSearch.Text值。 我这样做了吗?
答案 0 :(得分:0)
要保护网站免受SQL注入,您可以使用SQL参数。 SQL参数是在执行时以受控方式添加到SQL查询的值。
示例:
txtUserId = getRequestString("UserId");
sql = "SELECT * FROM Customers WHERE CustomerId = @0";
command = new SqlCommand(sql);
command.Parameters.AddWithValue("@0",txtUserID);
command.ExecuteReader();
SQL引擎检查每个参数以确保它的列正确并按字面处理,而不是作为要执行的SQL的一部分。
查看this了解详情。
是的,你仍然可以使用文本框来获取价值。