ホームページ  >  記事  >  バックエンド開発  >  SqlDataReader の無効な変換の解決策を共有する

SqlDataReader の無効な変換の解決策を共有する

零下一度
零下一度オリジナル
2017-06-15 13:40:381283ブラウズ

この記事では、SqlDataReaderの指定された変換が無効である場合の解決策を主に詳しく紹介します。興味のある方は参考にしてください。

SqlDataReaderの指定された変換が無効な場合の解決策は次のとおりです。

//获取最新显示顺序数据
      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();//关闭
SqlDataReader 独自の GetInt32 (および GerString など) メソッド


は、データベース内の

データ型

に対応する列を取得するだけであり、型変換の機能を持っていないため、取得することはできません。このように使用します

解決策 2つのタイプがあります1. int型を返す必要がある場合、データベース内のフィールドがint型として定義されている場合、GetInt32が可能です
2.がデータベースに定義されておらず、 int 型を返したい場合は、まずデータベース内の対応する型を使用してそれを取得し、次に int.Parse(selectunitidread.GetString(0)) のように変換します

上で書いたのと同じように、int 型を返し、最後に再度変換する必要があります。文字列

で、データベース内の型が文字列に対応する varchar の場合、次の値
を直接割り当てることができます: rmoutbackinfo.UnitId = selectunitidread.GetString(0)
文字列に変換せずに

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

以上がSqlDataReader の無効な変換の解決策を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。