如何从SQL检索数据集引用的DataRow元素的名字?
题
所以我使用的是XmlWriter
和DataSet
建设一些XML但是当它穿过DataRow
每个DataSet
谈到时间循环我想不通怎么样“用户id”,并使得从存储过程回来做参考。在页面代码中,我看到他们这样做是Eval("userid")
或什么,我现在用的是同一个存储过程,但我在使用ASHX现在......看到“善有善报这里?”在下面的代码...
DataSet getData;
getData = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["connstr"].ConnectionString, CommandType.StoredProcedure, "Course_NewReportGet_Get_Sav", objPAra)
//COUNT NUMBER OF RESULTS FOR COUNT ATTRIBUTE (must add!)
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
using(XmlWriter writer = XmlWriter.Create("data.xml", settings))
{
writer.WriteStartElement("changes");
writer.WriteAttributeString("clientname", foundCompany.CompanyName);
writer.WriteAttributeString("clientid", foundCompany.Abbreviation);
//writer... INSERT COUNT ATTRIBUTE
foreach(DataRow dr in getData.Tables)
{
writer.WriteStartElement("change");
writer.WriteStartElement("user");
writer.WriteAttributeString("userid", dr... WHAT GOES HERE??;
}
writer.WriteEndElement();
}
解决方案
首先,您的foreach是错误的。您需要循环getData.Tables[0].Rows
。如果有超过1台,你需要循环getData.Tables。
但是,得到的答复是这是一个索引属性。所以,dr["userId"]
将让你的价值。
foreach (DataRow dr in getData.Tables[0].Rows) {
/ * blah, blah */
writer.WriteAttributeString("userId", dr["userId"]);
}
其他提示
这是很简单的。在您的数据行(DR)的整数列将与被访问:
int someVal = (int)dr["ColumnName"];
您内的foreach是问题。
应
if(getData.Tables.Count > 0){
foreach(DataRow dr in getData.Tables[0].Rows){
writer.WriteAttributeString("userid", dr["UserID"]);
}
}
您会想添加一个迭代的水平 - 你目前遍历表在foreach(DataRow dr in getData.Tables)
的DataRow对象是下一级
dr["userid"]
不隶属于 StackOverflow