0

SQLクエリで計算を使用しています。その計算フィールドをC#で使用するにはどうすればよいですか?試してみると、範囲外のインデックスの例外が発生します。

私の質問は:

 Select OwnerCompanyLog.olog_name,inlt_companyid,inlt_childcompid,inlt_effectinterest,inlt_percent,inlt_sharetype,inlt_shares,inlt_childbase,inlt_effdate,
   ((inlt_percent * inlt_effectinterest)/100)eff
    from InterestLogTable 
    INNER JOIN OwnerCompanyLog 
    ON 
    InterestLogTable.inlt_childcompid = OwnerCompanyLog.olog_companyid 
    where inlt_companyid=5 
    Order By inlt_childcompid 

inlt_percent * inlt_effectinterest)/100C#コードで使用したい:

 entity.ParentCompany = new List<Company>();
     while (parentCompanyReader.Read())
            {
    ParentCompany.Effect = parentCompanyReader["eff"].ToString();
    entity.ParentCompany.Add(ParentCompany);
            }

            parentCompanyReader.Close();

しかし、上記のエラーが発生しました。

4

2 に答える 2

0

column name ではなく index で使用してみてください。

     while (parentCompanyReader.Read())
        {
        ParentCompany.Effect = Convert.ToInt32(parentCompanyReader[5]);
        entity.ParentCompany.Add(ParentCompany);
        }

        parentCompanyReader.Close();

計算フィールドが整数を返すと仮定しています

また、必ず using ステートメントを使用して、エラーが発生した場合に接続が閉じられて破棄されるようにします。

于 2012-05-31T04:49:37.883 に答える
0

問題は計算フィールドのみです。上記のコメントは完全に正しいです。エラーがあるのは、parentCompanyReader クラスである可能性があります。その間、エラーを確認するためにいくつかのことを試していただけますか。

eff 列を中央に移動します。parentCompanyReader が限られた数の列しか処理できない可能性があります。

また、ここでの「eff」、列は何ですか?また、計算列の後に AS を配置します。

Select (inlt_percent * inlt_effectinterest)/100)eff AS EFF, OwnerCompanyLog.olog_name,inlt_companyid,inlt_childcompid,inlt_effectinterest,inlt_percent,inlt_sharetype,inlt_shares,inlt_childbase,inlt_effdate

注: これらは暗闇での単なる矢印です。

于 2012-05-31T04:40:29.240 に答える