2011-08-31 34 views
0
protected void goto_btn_Click(object sender, EventArgs e) 
    { 
     lblevent.Text == Request.QueryString["name"] 
     const string SQL = "SELECT SMS FROM Event WHERE EventName = "I want this to be lblevent"; 
        } 

这lblevent是从在使用的Request.QueryString另一页列表框选择的项目检索。我想用lblevent在WHERE条件,以防止硬编码。我知道我可以简单地键入事件名称,但由于我有超过1个事件我不能这样做..请帮助。谢谢使用标签在SQL语句的条件?

+0

这让我充满了喜悦知道无论我们认为我们在开发人员培训方面有多远,SQL注入都不会消失。对于lulz。 –

回答

4

使用参数化查询:

string EventName = Request.QueryString["name"]; 
string Sql = "SELECT SMS FROM Event WHERE EventName = @EventName"; 
SqlCommand Command = new SqlCommand(Sql, connection); 
Command.Parameters.Add("@EventName", EventName); 

而且,作为一个警世故事,从来没有格式化或者直接追加到一个SQL查询字符串:

//Don't do this 
string Sql = "SELECT SMS FROM Event WHERE EventName = " + Request.QueryString["name"]; 
//Or this 
string Sql = String.Format("SELECT SMS FROM Event WHERE EventName = {0}", Request.QueryString["name"]); 
+0

感谢您的回答。对此,我真的非常感激。由于 – user917145

+1

@ user917145,欢迎。如果答案对您有帮助,您可以将答案标记为已接受。 :) – Zabba