-6

我想从具有艺术家列的 up_song 表中检索艺术家名称为 Lata Mangeshkar 的记录,以及像 1.Lata Mangeshkar 2. Lata Mangeshkar,sunidhi chuhan 3.Mohit chuhan, Ashaji ,Lata Mangeshkar 这样的记录。

歌曲.aspx

    string lata = hlinklata.Text;
    hlinklata.NavigateUrl = "DisplayList.aspx?name=" + lata;

显示列表.aspx

     lblheader.Text = Request.QueryString["name"];

    String sql = "SELECT  title, song_id, movie_name, size FROM up_song WHERE  artist  LIKE  '%"+  lblheader.Text +" %' ";
    adpt = new SqlDataAdapter(sql, con);
     DataSet ds = new DataSet();
    adpt.Fill(ds, "title");
    var last6Uploaded = ds.Tables["title"].AsEnumerable().OrderByDescending(r => r.Field<int>("song_id"));
    foreach (DataRow row in last6Uploaded)
    {

        int songID = row.Field<int>("song_id");
        HyperLink hl = new HyperLink(); 
        hl.ID = "hyperlink" + songID;
        string title = row.Field<string>("title");
        hl.Text = title;
        hl.NavigateUrl = "Downloadpage.aspx?name=" + title;
        hl.ForeColor = System.Drawing.Color.White;
        Paneltitle.Controls.Add(hl);
        Paneltitle.Controls.Add(new LiteralControl("<br>"));
    }
4

1 回答 1

5

我认为问题是在 SQL 中插入的文本之后有一个额外的空间。这意味着您每次都在有效地搜索“lblheader.text”(后面有一个空格),我怀疑这是您想要的。

在 SQL 语句中,更改

LIKE '%"+ lblheader.Text +" %' ";

LIKE '%"+ lblheader.Text +"%' ";

在一个单独的问题上

上面的代码受到 SQL 注入的影响,这对您的应用程序来说是一个主要的安全问题。在这里阅读更多:http ://en.wikipedia.org/wiki/SQL_injection

于 2013-03-03T08:43:07.210 回答