gpt4 book ai didi

c# - 将 mysql 读取器结果转换为字符串会在 C# 中引发异常

转载 作者:搜寻专家 更新时间:2023-10-30 20:16:30 25 4
gpt4 key购买 nike

我的函数

public Permission[] GetPermissionsForGroupID(string groupID)
{
MySqlCommand command = new MySqlCommand();
command.Connection = connection;
command.CommandText = "SELECT `permissions`.`permissionName`, `groups_permissions`.`permissionValue`
FROM `db`.`groups_permissions`, `db`.`permissions`
WHERE `permissions`.`permissionID` = `groups_permissions`.`permissionID`
AND `groups_permissions`.`groupID` = '" + groupID + "'";
MySqlDataReader reader = command.ExecuteReader();
List<Permission> permissions = new List<Permission>();
while (reader.Read())
{
permissions.Add(new Permission((string)reader[0], (int)reader[1]));
}
reader.Close();
return permissions.ToArray();
}

抛出 System.InvalidCastException 于

permissions.Add(new Permission((string)reader[0], (int)reader[1]));

我将其缩小到 (string)reader[0],其中 varchar 应该转换为 string

reader[0] = permissions.permissionName = varchar

可能是什么问题?

编辑:

reader[0] 的值为字符串“kick_user_power”,reader[1] 的值为整数“75”。

编辑 2:

Permission的构造函数

public Permission(string permissionName, int permissionPower)
{
PermissionName = permissionName;
PermissionPower = permissionPower;
}

并且,为了更好的可视化,reader[0]reader[1] 的值: Reader-Values

最佳答案

网络 SqlDataReader类包括用于检索列数据的函数。

你可能想使用

   reader.GetString(0)

   reader.GetSqlInt32(1)

检索您的值。

事实上,为了获得最佳结果,您应该使用

  reader.IsDbNull(0)? "missing value" : reader.GetString(0)

关于c# - 将 mysql 读取器结果转换为字符串会在 C# 中引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36306708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com