この記事では、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)) のように変換します
で、データベース内の型が文字列に対応する varchar の場合、次の値
を直接割り当てることができます: rmoutbackinfo.UnitId = selectunitidread.GetString(0)
文字列に変換せずに
//解决 showOrder=int.Parse(dataReader.GetString(0));
以上がSqlDataReader の無効な変換の解決策を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。