【问题标题】:sqlite Where Likesqlite 喜欢的地方
【发布时间】:2017-11-01 09:13:08
【问题描述】:

我有一个小问题想要解决,但我遇到了一些麻烦。 我是一个 DataGrid,其中包含姓名、姓氏、地址、电话号码和出生年份等信息。旁边我有一个文本框,它就像一个搜索,我在其中按名称搜索 DataGrid。为了测试,我加了两个人。一个名称为“Mark”,第二个名称为“1”。这个想法是,如果我在文本框中输入“ma”或“mar”,它应该列出每个名字以“ma”或类似名称开头的人。 现在的问题是,当我输入名字“1”时,会显示名字以“1”开头的人,但是当我输入“m”或任何其他字符时,什么也没有发生。就像只有数字有效,字母无效。我做错了什么,问题出在哪里,有人可以帮忙吗?以下是“FilterName”的查询代码:

   SQLiteConnection KonekcijaSQL = new 
   SQLiteConnection(@"DataSource=DzudoKlub.db;Version=3;");
        StringBuilder sb = new StringBuilder();
        // translation to english "Select * from Person Where name Like 
        @Name + '%'"
        sb.AppendLine("SELECT * ");
        sb.AppendLine("FROM Osoba");
        if (ime != string.Empty)
        {
            sb.AppendLine("WHERE Ime like @Ime + '%'");
        }

【问题讨论】:

  • 未尝试的建议:您是否将@Ime 绑定到文本框的内容?如果是这样,请尝试将 '%' 附加到您绑定的值,而不是将其包含在 SQL 语句中。

标签: sqlite where sql-like


【解决方案1】:

在 SQL 中,+ 仅用于添加数字;字符串连接必须使用||

【讨论】:

  • 谢谢 CL。与此同时,我找到了一个解决方案并稍微改变了我的代码。
【解决方案2】:
        ime = ime + "%";
        SQLiteConnection KonekcijaSQL = new SQLiteConnection(@"Data Source=DzudoKlub.db;Version=3;");
        StringBuilder sb = new StringBuilder();
        sb.AppendLine("SELECT * ");
        sb.AppendLine("FROM Osoba");
        if (ime != string.Empty)
        {
            sb.AppendLine("WHERE Ime like  @Ime");
        }

.

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多