どのように私は、SQLから取得したDataSetの名前でのDataRow要素を参照するのですか?
質問
だから私はXmlWriter
とDataSet
を使用して、いくつかのXMLを構築していますが、それはDataRow
に各DataSet
をループに時間が来るとき、私は戻って、ストアドプロシージャから来る「ユーザーID」と、このような類似の参照を行う方法を見つけ出すことはできません。ページのコードでは、私は彼らがEval("userid")
としてそれをやってたり、私が同じストアドプロシージャを使用していますが、私は今ASHXでそれを使用しています何かを見る...「HERE GOES WHAT?」を参照以下のコードで...
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"]);
}
他のヒント
これは非常に簡単です。あなたのDataRow(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オブジェクトを1つのレベル下にある
DataRow.Item プロパティ
次のようにdr["userid"]
所属していません StackOverflow