错误:GetCharacters System.InvalidCastException:指定的强制转换是无效的服务器

时间:2016-06-14 00:44:57

标签: c#

错误

  

System.InvalidCastException:指定的强制转换无效。

第71行

Tamer.Partner = GetDigimon((uint)(int)dr["partner"]);

下面的代码示例

public static List<Character> GetCharacters(uint AcctId)
{
    List<Character> chars = new List<Character>();
    try
    {
        using (MySqlCommand cmd = new MySqlCommand(
            "SELECT * FROM `chars` WHERE `accountId` = @id"
            , Connect()))
        {
            cmd.Parameters.AddWithValue("@id", AcctId);

           using(MySqlDataReader dr = cmd.ExecuteReader())
           {
               if (dr.HasRows)
               {
                   while (dr.Read())
                   {
                       Character Tamer = new Character();
                       Tamer.AccountId = AcctId;
                       Tamer.CharacterId = Convert.ToUInt32((int)dr["characterId"]); ;
                       Tamer.Model = (CharacterModel)(int)dr["charModel"];
                       Tamer.Name = (string)dr["charName"];
                       Tamer.Level = (int)dr["charLv"];
                       Tamer.Location = new Helpers.Position((short)(int)dr["map"], (int)dr["x"], (int)dr["y"]);

                       Tamer.Partner = GetDigimon((uint)(int)dr["partner"]);
                       if (dr["mercenary1"] != DBNull.Value)
                       {
                           int mercId = (int)dr["mercenary1"];
                           Digimon merc = GetDigimon((uint)mercId);
                           Tamer.DigimonList[1] = merc;
                       }
                       if (dr["mercenary2"] != DBNull.Value)
                       {
                           int mercId = (int)dr["mercenary2"];
                           Digimon merc = GetDigimon((uint)mercId);
                           Tamer.DigimonList[2] = merc;
                       }

1 个答案:

答案 0 :(得分:0)

不确定为什么要尝试进行此转换。但是,试试这个

Convert.ToUInt32(Convert.ToInt32(dr["partner"]))