【问题标题】:SQL query WHERE string LIKE field [closed]SQL查询WHERE字符串LIKE字段[关闭]
【发布时间】:2013-03-03 08:33:24
【问题描述】:

我想从具有艺术家列的 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>"));
    }

【问题讨论】:

  • 您遇到了什么问题或错误是什么
  • 有什么问题?对我来说似乎很好......
  • 是 sql 查询或 c# 代码中的问题,以及您使用 lambda experssion 的原因,因为您可以在 sql 查询中执行所有操作
  • 您可以轻松使用 linq 查询。

标签: c# sql sql-server


【解决方案1】:

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

在SQL语句中,改变

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

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

关于一个单独的问题

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多