连接文本框值以构建SQL查询

时间:2018-06-14 04:46:32

标签: sql-server ado.net

这是非常基本的,显然不是一个很好的做法,因为它会引发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,因为这是非常基本的,但我只是想让我的概念清晰。

1 个答案:

答案 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";并查看查询内容。