这是非常基本的,显然不是一个很好的做法,因为它会引发SQL注入攻击。但我想知道双引号在单引号中的作用。
using (SqlConnection con = new SqlConnection(cs))
{
string ph = "ph"; // consider it is coming from textbox.
// here one single quote is to make Name a string - why the other double qoute?
string query = "select * from tblProduct where Name like '" + ph + "%'";
SqlCommand cmd = new SqlCommand(query, con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();
}
请不要DOWNVOTE,因为这是非常基本的,但我只是想让我的概念清晰。
答案 0 :(得分:1)
我认为你误解了这一行
string query = "select * from tblProduct where Name like '" + ph + "%'";
您似乎认为字符串被定义为select * from tblProduct where Name like '" + ph + "%'
,因为问题是为什么会有双引号;但实际上比这更简单。字符串从双引号变为双引号(除非使用文字字符串,但让我们保持这个简单)。这一行只是将三个字符串组合在一起:
select * from tblProduct where Name like '
和ph
(因为这是ph变量中的值)和%'
例如,尝试将string ph="ph";
更改为string ph="hello";
并查看查询内容。