2013-04-29 76 views
0

我有一個數據集通過我的web服務執行存儲過程後帶入。如果數據集是空的,我需要返回一個通用結果而不是任何東西。在我的WebService(.ASMX)代碼下面返回XML,如果它是EMPTY,就會被吐出.XML。不知道它是否有幫助,但是我在這裏完全不知所措。理想情況下,我想看看Table1是否存在,然後做點什麼......但是,我再次陷入困境。謝謝!如何將XML加載到數據集如果這是空的

public DataSet GetMaleDogsDS() 
    { 
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
     //Define the dataset, in this case dsDogs 
     DataSet dsDogs = new DataSet(); 
     // 
     dsDogs.Tables.Add("Dogs"); 
     DbCommand dbCommand = null; 
     JavaScriptSerializer js = new JavaScriptSerializer(); 

     try 
     { 
      Database db = DatabaseFactory.CreateDatabase(); 

      string sqlCommand = "sp_GetDogs"; 
      dbCommand = db.GetSqlStringCommand(sqlCommand); 
      dbCommand.CommandType = CommandType.StoredProcedure; 

      db.AddInParameter(dbCommand, "Gender", DbType.String, "male"); 
      dsDogs = db.ExecuteDataSet(dbCommand); 
      string strXml = dsDogs.GetXml(); 
      return dsDogs; 
     } 

     catch 
     { 

      string strXml = js.Serialize(dsDogs); 
      return dsDogs; 
     } 

    } 

下面是空的結果XML:

<DataSet xmlns="http://0mitted.net/"> 
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"  xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"> 
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale=""> 
<xs:complexType> 
<xs:choice minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="Table"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="DogID" type="xs:string" minOccurs="0"/> 
<xs:element name="LongDesc" type="xs:string" minOccurs="0"/> 
<xs:element name="ShortDesc" type="xs:string" minOccurs="0"/> 
<xs:element name="ThumbURL" type="xs:string" minOccurs="0"/> 
<xs:element name="LargeURL" type="xs:string" minOccurs="0"/> 
<xs:element name="Gender" type="xs:string" minOccurs="0"/> 
<xs:element name="Age" type="xs:string" minOccurs="0"/> 
<xs:element name="Weight" type="xs:string" minOccurs="0"/> 
<xs:element name="HealthStatus" type="xs:string" minOccurs="0"/> 
<xs:element name="ActivityLevel" type="xs:string" minOccurs="0"/> 
<xs:element name="PersonalityTraits" type="xs:string" minOccurs="0"/> 
<xs:element name="InteractionDog" type="xs:string" minOccurs="0"/> 
<xs:element name="InteractionCat" type="xs:string" minOccurs="0"/> 
<xs:element name="ChildRequirement" type="xs:string" minOccurs="0"/> 
<xs:element name="FenceRequirement" type="xs:string" minOccurs="0"/> 
<xs:element name="WorkSchedule" type="xs:string" minOccurs="0"/> 
<xs:element name="LeashManners" type="xs:string" minOccurs="0"/> 
<xs:element name="TrainingNeeded" type="xs:string" minOccurs="0"/> 
<xs:element name="AdoptionStatus" type="xs:string" minOccurs="0"/> 
<xs:element name="AdoptionFee" type="xs:string" minOccurs="0"/> 
<xs:element name="Name" type="xs:string" minOccurs="0"/> 
<xs:element name="behavior" type="xs:string" minOccurs="0"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:choice> 
</xs:complexType> 
</xs:element> 
</xs:schema> 
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"  xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"/> 
</DataSet> 

回答

1

您可以使用此代碼來檢查,如果你的數據集爲空,而如果這個條件是真正的負載一個xml文件到您的數據集:

if (ds.Tables[0].Rows.Count == 0) 
{ 
    DataSet dataSet = new DataSet(); 
    dataSet.ReadXml("input.xml", XmlReadMode.ReadSchema); 
    //... 
} 

在您的方案這個代碼將適合這樣的:

dsDogs = db.ExecuteDataSet(dbCommand); 
if (dsDogs.Tables[0].Rows.Count == 0) 
{ 
    dsDogs.ReadXml("empty.xml", XmlReadMode.ReadSchema); 
} 
return dsDogs; 
+0

天才!我會讓你知道,如果這樣做,因爲這符合我的需求! – MrS1ck 2013-04-29 17:32:21

+0

我應該在哪裏堅持這一點?我試過了,在我的大腦中,這似乎是合乎邏輯的,在返回語句之後,但是缺少我的斷點,表明它(讀取「某事」)不起作用。 – MrS1ck 2013-04-29 17:38:22

+1

嗯,我想你想檢查你的執行語句後dsDog是否爲空。所以把它放在這行之後:'dsDogs = db.ExecuteDataSet(dbCommand);' – MUG4N 2013-04-29 17:41:09

相關問題