【问题标题】:Mysql WHERE LIKE with RadCombobox.TextMysql WHERE LIKE with RadCombobox.Text
【发布时间】:2015-05-13 22:04:05
【问题描述】:

由于使用@,我在选择 WHERE LIKE 时遇到问题。

使用

string Mysql = "SELECT * FROM sytransactioncategory WHERE TransactionCategory LIKE '%' + @TransactionCategory + '%'";

不工作。

我找到了几个有趣的答案,例如this,但我没有设法使其适应我的情况。 这是我当前的 C# 代码:

string Mysql = "SELECT * FROM sytransactioncategory WHERE TransactionCategory LIKE @TransactionCategory";
MySqlDataAdapter adapter = new MySqlDataAdapter(Mysql,ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
adapter.SelectCommand.Parameters.AddWithValue("@TransactionCategory", e.Text);

谁能给我一首曲子?

【问题讨论】:

  • 您在第一种情况下的查询构造有点缺陷,应该是....LIKE '%" + ....。在第二种情况下,您没有提供任何 % 符号,除非它们已经在 e.Text 中。
  • 不,我有一个your/you're 错字永生! ;_;
  • @Uueerdo 您可以编辑自己的 cmets。
  • @OllieJones AFAIK,不是经过一段时间后。
  • 哦,是的,没错。

标签: c# mysql where sql-like radcombobox


【解决方案1】:

MySQL 中的+ 运算符适用于数字。

如果您尝试在查询中构造字符串,则需要 ... LIKE CONCAT('%', TransactionCategory, '%')

问题是这样的:0 + 'somethingrandom' 的结果值为零,因为 MySQL 尝试将 'somethingrandom' 转换为整数,并确定它为零。

0 + '2randomthings'

值为 2。

所以,您的查询是说WHERE column LIKE 0

  1. 不会因抛出任何类型的语法错误而失败。
  2. 没有发现任何有用的东西。

在 MySQL 中调试这种东西在 synt*x 中很痛苦

【讨论】:

    【解决方案2】:

    谢谢奥利。 我在 phpmyadmin 中尝试了您的解决方案,看起来这两个选项都有效:

    • LIKE CONCAT('%', 'TransactionCategory', '%')(表示您的答案在 TransactionCategory 前后添加 ')
    • LIKE '%TransactionCategory%'

    所以我现在的问题是:如何将 TransactionCategory 替换为 @TransactionCategory,这是在 RadComboBox "rcbTransactionCategory" 中输入的值

    【讨论】:

      【解决方案3】:

      你应该尝试使第二种方法起作用,它比第一种更好。

      为了解决你的问题,在c#中,你的语句应该是这样的:

      string Mysql = "SELECT * FROM sytransactioncategory WHERE TransactionCategory LIKE '%" + str_TransactionCategory + "%'";

      其中 str_TransactionCategory 是保存搜索值的变量。

      【讨论】:

      • 你好,蒂姆。我有点困惑,因为首先你建议我使用第二种方法('%TransactionCategory%'),然后你给我第三种方法('%" + str_TransactionCategory + "%'),我无法在 phpmyadmin 中成功运行。 (它不返回任何值)。我尝试了以下方法来使用您的 str_TransactionCategory: RadComboBox rcbAccountCode = (RadComboBox)item.FindControl("rcbAccountCode");然后我该如何声明 str_TransactionCategory = rcbAccountCode.Text?
      • 您需要以某种方式从表单中收集值,可能就像您的代码一样。我没有你的全部设置,你可以通过在某个地方阅读完整的教程来找出答案。第二种方法比较复杂,以后可以掌握。
      【解决方案4】:

      其实答案很简单。无需使用 findcontrol。这对我有用:

      string Mysql = "SELECT * FROM sytransactioncategory WHERE TransactionCategory LIKE CONCAT('%', @TransactionCategory, '%');
      

      感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 2011-11-28
        • 1970-01-01
        • 2017-05-10
        • 1970-01-01
        • 1970-01-01
        • 2013-08-02
        • 2012-11-06
        • 2020-09-26
        • 1970-01-01
        相关资源
        最近更新 更多