CS0029: 无法将类型 'System.Int32' 的对象强制转换为类型 'System.String'


  1. 总结问题

从SQL ServerSELECT语句中读取对象的属性后将其添加到列表中-我收到以下错误:

System.InvalidCastException:"无法将类型为"System.Int32"的对象强制转换为"System.String"">

包括有关目标的详细信息

  • 我的目标是使用SELECTT-SQL语句从数据库中读取资产更改,读取并将其附加到列表中,然后在视图中使用列表显示这些更改

描述预期和实际结果

  • 预期:不会弹出错误。

  • 实际:弹出前面提到的错误。

包括任何错误消息

  • 前面已经提到了
  1. 描述您尝试过的内容

显示您尝试过的内容,并告诉我们您(在本网站或其他地方(发现了什么,以及为什么它不能满足您的需求。当你提供研究时,你可以得到更好的答案。

  • https://stackoverflow.com/a/3081940/13510906

  • 获取整数形式的值,然后将其转换为字符串。

//UserID = reader.GetString(0),
//AssetID = reader.GetString(1),
UserID = reader.GetInt32(0).ToString(),
AssetID = reader.GetInt32(1).ToString(),
  • 确保变量UserIDAssetID都使用int

仍然会弹出相同的错误。

  1. 显示一些代码

在适当的时候,共享其他人复制你的问题所需的最小代码量(也称为最小、可复制的示例(

我不知道如何在不以某种方式破坏项目的情况下生成一个最小的示例。

这里有下载该项目的链接。下载后,提取并运行它。

电子邮件地址和密码分别为john@gmail.comjohn123。你应该看到";资产历史";在顶部导航栏上。单击它以产生问题。

由于两个变量/属性都是整数,所以不应该将它们转换为字符串:

UserID = reader.GetInt32(0),
AssetID = reader.GetInt32(1),

如果以后需要将它们添加到字符串列表中,可以在那里调用ToString(UserID.ToString(), AssetID.ToString()(

GetString方法(Int32(需要一个整数(列索引(作为参数。此外,您还可以在事务之后添加ToString((。

UserID = reader.GetString(reader.GetOrdinal("Column Name")),
AssetID = reader.GetString(reader.GetOrdinal("Column Name")),

您不能将字符串隐式分配给integer,您需要解析字符串,在本例中使用int.Parse

你的代码可以给我这样的东西:

UserID = int.Parse( reader.GetInt32(0).ToString());
AssetID = int.Parse(reader.GetInt32(1).ToString());

有关的更多信息,请访问此链接。

相关内容

最新更新