数据集调试错误

时间:2014-01-07 16:39:18

标签: c# dataset

IndexOutOfRange的错误 - 找不到表0 - 这是我的代码它命中foreach行并抛出错误。我应该更新什么才能执行?

SqlCommand comnd = new SqlCommand(query, con);
con.Open();
DataSet ds = new DataSet();
StreamWriter strmwr = new StreamWriter(Location);
foreach (DataRow in ds.Tables[0].Rows

2 个答案:

答案 0 :(得分:2)

您永远不会填充DataSet - 您正在创建 SQL命令,但从不执行它。你根本不是在查询数据库。

目前尚不清楚您是否真的需要DataSet, to be honest - you could potentially just use a reader returned by [ ExecuteReader ][1]. Personally I'd go in that direction, as I'm not a big fan of DataSet`。 (或者,我会使用ORM来避免所有这些低级别的工作......)

(请注意,您应该为编写器,命令等使用using语句。)

如果您确实需要DataSet,可能需要查看SqlDataAdapter

var adapter = new SqlDataAdapter(command);
adapter.Fill(ds);
// Now your DataSet will have data in it

答案 1 :(得分:2)

您正在创建一个没有表格的空DataSet。您打算Fill数据集吗?

SqlCommand comnd = new SqlCommand(query, con);
con.Open();
SqlDataAdapter da = new SQlDataAdapter(comnd); // create a DataAdapter
DataSet ds = new DataSet();
StreamWriter strmwr = new StreamWriter(Location);   // Not sure what this is for
da.Fill(ds);  // fill the DAtaSet

foreach (DataRow in ds.Tables[0].Rows

我没有包含任何using语句,但建议您将所有命令和连接包装在其中。