列<column name =“”>不属于表<table name =“”> </table> </column>

时间:2014-05-14 22:25:25

标签: c# sql iis ado.net dataset

我有一个使用数据集的方法,

 var EmpNameList = new List<string>();
 var EmpDS = GetEmployeeList();
 foreach (DataRow EmpDR in EmpDS.Tables[0].Rows)
 {
     EmpNameList.Add(EmpDR["EmpName"].ToString()); // Error on this line
 }

例外情况:

  

列'EmpName'不属于表'EmpDetailTbl'          在System.Data.DataRow.GetDataColumn(String columnName)          at System.Data.DataRow.get_Item(String columnName)          在System.Data.DataRowExtensions.Field [T](DataRow row,String columnName)

有时我们也会为同一方法获得以下异常

  

在System.Data.DataTableCollection.get_Item(Int32 index)中找不到表0

以上所有异常都不会一致地再现,而且是间歇性的。

GetEmployeeList定义如下所示

  public DataSet GetEmployeeList()
  {
    var  Connectionstring = "MyConnectionString";
    var query = "Select EmpName, EmpId, HireDate from EmpDetail"; 
    DataSet ds = new DataSet();

    using (OleDbConnection connection = new OleDbConnection(Connectionstring))
    using (OleDbCommand command = new OleDbCommand(query, connection))
    using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
    {
      adapter.Fill(ds,"EmpDetailTbl");
      return ds;
    }
 }

我也尝试过使用SqlConnection类的SQL Server。

这似乎很奇怪吧?

2 个答案:

答案 0 :(得分:2)

如果要在DataSet中填充其他DataTable,那么&#34; EmpDetailTbl&#34;可能不是每次都是第一个(0)。请按名称参阅DataTable:

foreach (DataRow EmpDR in EmpDS.Tables["EmpDetailTbl"].Rows) { 

答案 1 :(得分:0)

http://msdn.microsoft.com/en-us/library/y4b211hz(v=vs.110).aspx

查看备注 - 如果您使用的实际查询字符串不返回任何行,则不会向数据集添加任何表。另请注意,使用的字符串区分大小写。