【发布时间】:2018-03-08 09:21:23
【问题描述】:
现在我在数据库中执行搜索并使用
显示结果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 值。 我这样做对吗?
【问题讨论】:
-
嗨,看看这个(类似的)问题:stackoverflow.com/questions/7174792/…
-
“但我真的看不出这有什么不同” 那么您还应该阅读文本,而不仅仅是 c&p 示例代码... ;D
-
但是说真的:我认为您的参数名称与查询中的参数不匹配。它应该,虽然 AFAIK
-
@Fildor 我在帖子中更改了一些名称,因为它们中的大多数都不是英文的。看起来我错过了一些。
标签: c# sql winforms sql-injection