Mysql WHERE LIKE与RadCombobox.Text
Mysql WHERE LIKE与RadCombobox.Text
我在使用SELECT WHERE LIKE时遇到了麻烦,原因是使用了@。
使用
string Mysql = "SELECT * FROM sytransactioncategory WHERE TransactionCategory LIKE '%' + @TransactionCategory + '%'";
不起作用。
我找到了几个有趣的答案,比如这个,但我没有成功将其适应到我的情况。
这是我的当前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);
有人能给我一个提示吗?
问题出现的原因:在c#中,使用RadCombobox控件的Text属性作为查询条件时,语句格式不正确,无法返回结果。
解决方法:将语句修改为以下格式:
string Mysql = "SELECT * FROM sytransactioncategory WHERE TransactionCategory LIKE '%" + str_TransactionCategory + "%'";
其中,str_TransactionCategory是保存搜索值的变量。
为了解决这个问题,你需要从表单中获取值,可以使用类似你的代码的方法。我不知道你的整体设置是什么样的,你可以阅读完整的教程来找到答案。第二种方法会让事情变得复杂,你可以以后再掌握它。
以下是整理后的文章:
在c#中,使用RadCombobox控件的Text属性作为查询条件时,语句格式不正确,无法返回结果。为了解决这个问题,你可以尝试修改语句格式。
首先,你应该尝试让第二种方法起作用,因为它比第一种方法更好。但是,如果你要解决问题,在c#中,你的语句应该是这样的:
string Mysql = "SELECT * FROM sytransactioncategory WHERE TransactionCategory LIKE '%" + str_TransactionCategory + "%'";
在这个语句中,str_TransactionCategory是保存搜索值的变量。
然而,有用户提出了疑问,他在phpmyadmin中无法成功运行这个语句(没有返回任何值)。他尝试使用以下代码来获取搜索值:
RadComboBox rcbAccountCode = (RadComboBox)item.FindControl("rcbAccountCode");
然后,他想知道如何将RadComboBox的Text属性赋值给str_TransactionCategory。
对于这个问题,你需要从你的表单中获取值,可以使用类似上面提到的代码的方法。但是,由于我不知道你的整体设置是什么样的,你可以阅读完整的教程来找到答案。另外,第二种方法会让事情变得复杂,你可以以后再掌握它。
问题的原因是在MySQL中,"+"运算符只适用于数字。如果想要构建字符串查询,应该使用"LIKE CONCAT('%', TransactionCategory, '%')"。问题在于,0 + 'somethingrandom'的结果值为零,因为MySQL试图将'somethingrandom'转换为整数,并决定它是零。而0 + '2randomthings'的值为2。因此,查询语句中的WHERE column LIKE 0既不会抛出语法错误,也找不到任何有用的结果。在MySQL中调试这种问题是一件很麻烦的事情。解决方法是使用正确的语法来构建字符串查询,即使用"LIKE CONCAT('%', TransactionCategory, '%')"来替代0 + TransactionCategory。