ホームページ > バックエンド開発 > C#.Net チュートリアル > SqlDataReader で指定された無効な変換に対する完璧なソリューション

SqlDataReader で指定された無効な変換に対する完璧なソリューション

巴扎黑
リリース: 2017-08-08 13:21:17
オリジナル
2746 人が閲覧しました

この記事は主に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 型を返す必要はなく、最後に string に変換します
そしてデータベース内の型は string に対応する varchar である場合、次の値を直接割り当てることができます
例: rmoutbackinfo.UnitId = selectunitidread.GetString (0)
文字列に変換せず


//解决
showOrder=int.Parse(dataReader.GetString(0));
ログイン後にコピー

以上がSqlDataReader で指定された無効な変換に対する完璧なソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート