Maison  >  Article  >  développement back-end  >  Solution parfaite à la conversion invalide spécifiée par SqlDataReader

Solution parfaite à la conversion invalide spécifiée par SqlDataReader

巴扎黑
巴扎黑original
2017-08-08 13:21:172728parcourir

Cet article présente principalement en détail la solution à la conversion spécifiée non valide de SqlDataReader. Il a une certaine valeur de référence. Les amis intéressés peuvent se référer à

La solution à la conversion spécifiée non valide de SqlDataReader pour plus de détails. est la suivante


//获取最新显示顺序数据
      string str = string.Format(@"if exists(select ShowOrder from GIS_FuncDefaultLayer where GISFuncId = {0})
                           select max(ShowOrder) as ShowOrder from GIS_FuncDefaultLayer where GISFuncId ={0}
                           else select '0' as ShowOrder", GISFuncId); 
      IDataReader dataReader = helper.ExecuteReader(CommandType.Text, str);
      if (dataReader.Read())//判断当前功能Id下是否有数据
      {
        //读取赋值
        try
        {
          showOrder = dataReader.GetInt32(0);
          
        }
        catch (Exception ex)
        {

          HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(ex.Message) };
          return result;
        }
        
      }
dataReader.Close();//关闭

Méthode GetInt32 de SQLDataReader (et d'autres telles que GerString, etc.)

Il récupère simplement la colonne du type de données correspondant dans la base de données, et n'a pas de fonction de conversion de type, il ne peut donc pas être utilisé comme ça

Solution Il existe deux types

1 Si vous devez renvoyer le type int, alors le champ dans la base de données est défini comme type int, alors GetInt32 est réalisable
2. le type n'est pas défini dans la base de données et vous souhaitez renvoyer le type int Oui, puis récupérez-le d'abord en utilisant le type correspondant dans la base de données, puis convertissez-le
tel que int.Parse(selectunitidread.GetString(0))
Si vous n'avez pas besoin de renvoyer le type int, tout comme ce que vous avez écrit ci-dessus, et finalement converti en string
et que le type dans la base de données est varchar correspondant à string, alors vous pouvez directement attribuer la valeur suivante
tel que : rmoutbackinfo.UnitId = selectunitidread.GetString(0)
au lieu de Puis convertir en chaîne


//解决
showOrder=int.Parse(dataReader.GetString(0));

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn