在MVC 4 Rest API上获取错误“IndexOutOfRangeException未处理”

时间:2014-02-14 18:29:29

标签: c# api asp.net-mvc-4 rest

我是c#的新手,在MVC4上制作Restful API,  我正在使用以下代码并在

上出错
" foreach (DataRow menuDR in menuDataSet.Tables [7].Rows)"

IndexOutOfRangeException未被用户代码处理,详细信息显示“找不到table7” 我使用与1表数据库相同的方法

foreach (DataRow menuDR in menuDataSet.Tables [0].Rows)

它正在工作,现在我在数据库中有8个表,我不知道如何处理这个异常,并尝试了各种各样的事情让它排序....

public IEnumerable<RestaurantsMenu> GetAllMenu()
{
menuCon = new SqlConnection ("Data Source=MyPc\\MyPc;Initial Catalog=MENU;Integrated Security=True");
menuDataAdapter = new SqlDataAdapter (" SELECT * FROM RestaurantsMenu ", menuCon);
foreach (DataRow menuDR in menuDataSet.Tables [7].Rows)
{
Rst_Menu.Add(new RestaurantsMenu(){Restaurant_ID = int .Parse (menuDR[0].ToString()), RestaurantName =menuDR[1].ToString(),
Menu =menuDR[2].ToString(), Price=int .Parse (menuDR[3].ToString()) } );
}
return Rst_Menu;
}

1 个答案:

答案 0 :(得分:0)

问题:您只查询数据库中的单个表(表索引0)数据并尝试访问索引为7的表,该表不可用。

即使您的数据库中有8个表,但查询后并未提供所有8个表数据,这些数据只会为您提供索引为零的表数据。

SELECT * FROM RestaurantsMenu

解决方案:上面的select语句,您应该始终Tables[0],因为您只能获得单个表格。

试试这个:获取多个表格

SqlDataAdapter menuDataAdapter = new SqlDataAdapter("SELECT * FROM RestaurantsMenu1;       "SELECT * FROM RestaurantsMenu2;"SELECT * FROM RestaurantsMenu3;", connection);
menuDataAdapter.TableMappings.Add("Table1", "RestaurantsMenu1");
menuDataAdapter.TableMappings.Add("Table2", "RestaurantsMenu2");
menuDataAdapter.TableMappings.Add("Table3", "RestaurantsMenu3");
for(int i=0;i<menuDataSet.Tables.Count;i++)
{
  foreach (DataRow menuDR in menuDataSet.Tables[i].Rows)
  {
    Rst_Menu.Add(new RestaurantsMenu(){Restaurant_ID = int .Parse (menuDR[0].ToString()), RestaurantName =menuDR[1].ToString(),
    Menu =menuDR[2].ToString(), Price=int .Parse (menuDR[3].ToString()) } );
  }
}