0

初めての MVC アプリケーションに取り組んでいて、エラーが発生しました。

データベースにクエリを実行し、ビュー ページに結果を表示しようとしています。

ここにコードがあります

 public class foreclosureList
{
    public string Area { get; set; }
    public int NumberOfListings { get; set; }
}
public class RETS_ListingsModel
{

    public RETS_ListingsModel(){} // empty COnstructor

    public static IEnumerable<foreclosureList> getForeclosureList() // making an IEnumerable list to contain the forclosure data
    {
        SqlConnection myConn;
        SqlCommand myCmd;
        SqlDataReader myReader;

            System.Collections.ArrayList aforclosureList = new System.Collections.ArrayList(); // create an array to hold data, later it will be converted to the ienumerable list. 
            string mySql =
             "Select [Area], count (*) as numberListings from listingTable" +
             " Where ForeclosureYN = 'Y'" +
             " AND Area <> ''" +
             " Group By Area";

            myConn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
            myCmd = myConn.CreateCommand();
            myCmd.CommandText = mySql;
            myConn.Open();

            foreclosureList currentList = new foreclosureList(); // making an instance foreclosureList class and then adding the results from the query.

            myReader = myCmd.ExecuteReader();
            while (myReader.Read())
            {

                currentList.Area = (string)myReader["Area"];
                currentList.NumberOfListings = (int)myReader["NumberOfListings"];
                aforclosureList.Add(currentList); // adding the class object to the array
            }


            myReader.Close();
            myConn.Close();

            IEnumerable<foreclosureList> iforeclosureList = aforclosureList.Cast<foreclosureList>(); //converting the array back to the ienumerable list
            return iforeclosureList;
        }

    }

しかし、次のようなエラーが表示されます: System.IndexOutOfRangeException: NumberOfListings

また、ビュー ページで、このデータにアクセスするには、1 行目に次のコードを使用するのが正しいですか?

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Foreclosure.Models.foreclosureList>" %>
4

1 に答える 1

3

これが問題です:

string mySql =
"Select [Area], count (*) as numberListings from listingTable" 

...
currentList.NumberOfListings = (int)myReader["NumberOfListings"];

と呼ばれるものは何もフェッチしませんNumberOfListings。あなたはフェッチしnumberListingsます。それらは同じではありません。

さらに、using接続、ステートメント、およびリーダーにステートメントを使用し、.NET 命名規則に従うようにコードを変更し、使用をやめてArrayList(代わりに優先List<T>)、手動 SQL の代わりに LINQ のようなものに移行する可能性があります (これにより、このエラーを回避できます)。

于 2013-05-15T13:45:00.537 に答える