Partagez la solution pour la conversion non valide de SqlDataReader

零下一度
Libérer: 2017-06-15 13:40:38
original
1279 Les gens l'ont consulté

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();//关闭
Copier après la connexion

La méthode GetInt32 de SQLDataReader (et d'autres comme GerString, etc.)

obtient simplement celle correspondante dans la base de donnéesLes colonnes de type de données n'ont pas la fonction de conversion de type, elles ne peuvent donc pas être utilisées de cette manière

SolutionIl 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. la base de données et que vous souhaitez renvoyer le type int, puis utilisez simplement le type correspondant dans la base de données pour l'obtenir d'abord, puis convertissez
tel que int.Parse(selectunitidread.GetString(0))
Si vous ne le faites pas Je n'ai pas besoin de renvoyer le type int, tout comme ce que vous avez écrit ci-dessus, et enfin Et converti en chaîne
et le type dans la base de données est varchar correspondant à la chaîne, alors vous pouvez directement attribuer la valeur suivante
telle que : rmoutbackinfo.UnitId = selectunitidread.GetString(0)
sans conversion en chaîne

//解决
showOrder=int.Parse(dataReader.GetString(0));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal