どのように私は、SQLから取得したDataSetの名前でのDataRow要素を参照するのですか?

StackOverflow https://stackoverflow.com/questions/675133

  •  21-08-2019
  •  | 
  •  

質問

だから私はXmlWriterDataSetを使用して、いくつかの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つのレベル下にある

scroll top