Mysql WHERE LIKE与RadCombobox.Text

6 浏览
0 Comments

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);

有人能给我一个提示吗?

0
0 Comments

问题出现的原因:在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。

对于这个问题,你需要从你的表单中获取值,可以使用类似上面提到的代码的方法。但是,由于我不知道你的整体设置是什么样的,你可以阅读完整的教程来找到答案。另外,第二种方法会让事情变得复杂,你可以以后再掌握它。

0
0 Comments

问题的原因是在MySQL中,"+"运算符只适用于数字。如果想要构建字符串查询,应该使用"LIKE CONCAT('%', TransactionCategory, '%')"。问题在于,0 + 'somethingrandom'的结果值为零,因为MySQL试图将'somethingrandom'转换为整数,并决定它是零。而0 + '2randomthings'的值为2。因此,查询语句中的WHERE column LIKE 0既不会抛出语法错误,也找不到任何有用的结果。在MySQL中调试这种问题是一件很麻烦的事情。解决方法是使用正确的语法来构建字符串查询,即使用"LIKE CONCAT('%', TransactionCategory, '%')"来替代0 + TransactionCategory。

0