【问题标题】:Error "Cannot perform Like Operation on 'System.Int32' and 'System.String'" setting DataGridView data source设置 DataGridView 数据源时出现错误“无法对 'System.Int32' 和 'System.String' 执行类似操作”
【发布时间】:2014-10-13 02:24:46
【问题描述】:

我已经使用 Visual Studio 在 Windows 应用程序中创建了一个数据网格视图,并尝试使用搜索文本框对其进行查询。该字段是一系列数字,但我为Varchar(10) 设置了它。

当我使用下面的命令时,我得到以下错误

无法对“System.Int32”和“System.String”执行类似操作

代码:

DataView DV = new DataView(dbdataset);
DV.RowFilter = string.Format("JobNumber Like '%{0}%' ", textBox1.Text);
dataGridView1.DataSource = DV;

谢谢

【问题讨论】:

  • 我猜 JobNumber 列的类型是 int?
  • 您使用的是哪个数据库?
  • Otto OP 声明数据类型的类型为 varchar(10)
  • 我正在使用 MySQL 并且 JobNumber 是数据库中的 PrimKey
  • @DJKRAZE,dataview的jobnumber列是int32类型。如果是字符串就不会出错

标签: c# sql winforms visual-studio-2010


【解决方案1】:

在您点赞之前将JobNumber 转换为字符串。

DV.RowFilter = string.Format("convert(JobNumber, 'System.String') Like '%{0}%' ",
                             textBox1.Text);

DataView 可以在其过滤器中使用 many different options

正如here 解释的那样,过滤是由 .NET 和 DataView 进行的,而不是由 MySql 进行的

【讨论】:

  • 这并没有使应用程序崩溃,但它也没有查询它
  • @dane,让我们澄清一些事情。你想搜索jobnumber 对吗?它是一个整数主键,对吗? jobnumber 的一些示例值是什么?为什么在你的问题中说varchar(10)
  • 最初也尝试对其进行硬编码以测试它是否有效,例如 DV.RowFilter = "jobNumber LIKE '1234'" 看看它是否有效,如果没有,那么还有其他问题
  • @DJKRAZE,这只会重复他原来的问题。 JobNumber,如果是 int,则需要转换为字符串才能使用 like 运算符。如果 OP 要尝试jobnumber = 1234,那无需转换即可工作。
  • 这就是为什么我问他是否可以做 JobNumber = vs jobNumber Like
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 2020-04-15
  • 2021-10-31
相关资源
最近更新 更多