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
答案 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
语句,但建议您将所有命令和连接包装在其中。