You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ADO.NET取数到KendoGrid时遇Int32转String类型转换异常

解决“Unable to cast object of type 'System.Int32' to type 'System.String'”异常

从你提供的代码来看,这个类型转换异常大概率是数据库字段类型与C#代码中读取/赋值的类型不匹配导致的,结合你的场景,我整理了几个排查和解决方向:

1. 先定位异常的具体字段

你当前的异常处理过于宽泛(空的catch块),建议先修改数据库层的异常捕获逻辑,记录详细的异常信息:

catch (Exception ex)
{
    // 可以写入日志或者输出调试信息,比如Console.WriteLine(ex.ToString());
    // 这样能直接看到异常发生在哪个字段的读取操作上
    operationStatus = GeneralDAL.OperationStatus.OperationFailed;
}

这样调试时就能精准定位到引发转换错误的字段,不用盲目排查。

2. 检查ID_Timeline_bulk字段的类型匹配

你代码中读取ID_Timeline_bulk的逻辑是:

ID_Timeline_bulk = sqlDataReader.IsDBNull(sqlDataReader.GetOrdinal(Timeline.Fildes.ID_Timeline_bulk)) 
    ? General.DefaultValues.Numricguid 
    : sqlDataReader.GetGuid(sqlDataReader.GetOrdinal(Timeline.Fildes.ID_Timeline_bulk)),

如果数据库中ID_Timeline_bulk字段的类型是INT(整数),而不是UniqueIdentifier(GUID),那么调用GetGuid()会直接抛出类型转换异常——因为数据库返回的是Int32对象,无法强制转换成Guid类型。

对应解决方案:

  • 如果数据库字段确实是INT:修改代码为读取整数,并确保Timeline类的ID_Timeline_bulk属性类型为int:
    ID_Timeline_bulk = sqlDataReader.IsDBNull(sqlDataReader.GetOrdinal(Timeline.Fildes.ID_Timeline_bulk)) 
        ? 0 // 或者你需要的默认整数值
        : sqlDataReader.GetInt32(sqlDataReader.GetOrdinal(Timeline.Fildes.ID_Timeline_bulk)),
    
  • 如果数据库字段应该是GUID:确认数据库中该字段的类型是UniqueIdentifier,并且插入数据时确实存储的是合法的GUID值。

3. 排查注释掉的其他字段

你代码中注释了“其他字段”,这些字段也可能存在类型不匹配的问题:

  • 比如,若某个string类型的属性,你直接用sqlDataReader.GetString()读取数据库中的INT字段,就会抛出“Int32转String”的异常;
  • 反过来,如果是int类型的属性,却读取了数据库中的字符串字段,也会引发类似错误。

对应解决方案:

逐个核对每个字段:

  1. 查看数据库表中对应字段的类型(如INT、VARCHAR、DATE等);
  2. 确保Timeline类的属性类型与数据库字段类型兼容;
  3. 使用对应的SqlDataReader读取方法:比如INT用GetInt32(),字符串用GetString(),日期用GetDateTime()等。如果需要转换类型(如把INT转成字符串),显式调用.ToString()方法,不要依赖隐式转换。

4. 检查SQL查询语句的正确性

确认Returnsp_tbl_TimelineLstShow_bulk(id_user)生成的SQL语句返回的字段类型是否符合预期:

  • 是否在查询中把INT字段用CAST/CONVERT转换成了字符串,但代码里却用GetInt32()读取;
  • 或者查询返回的字段和你预期的字段不匹配(比如别名写错,导致读取了错误的字段)。

小技巧:

调试时可以把生成的SQL语句复制到数据库管理工具(如SSMS)中执行,查看返回的每个字段的实际类型,再和代码中的读取逻辑对比。

内容的提问来源于stack exchange,提问作者hamed hassani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:16:02