2012-06-26 56 views
1

我想从数据库检索数据到一个XML标记使用存储过程。我想创建像标准XML响应一样的响应。而是我得到一个名为标签:<NewDataSet/>从数据库检索Xml数据到我的页面

这是我检索数据的代码:

comm = new SqlCommand("[sp_get_business_locations]", conn); 
    comm.CommandType = System.Data.CommandType.StoredProcedure; 
    comm.Parameters.AddWithValue("@Latitude", Latitude); 
    comm.Parameters.AddWithValue("@Longitude", Longitude); 
comm.ExecuteNonQuery();  
cdoc.LoadXml(shop.GetXml()); 

可以做些什么?谢谢。

DataSet shop = new DataSet(); 
XmlDocument cdoc = new XmlDocument(); 

这是我的存储过程:

SElECT  @TotalRows=COUNT(*) FROM HeritageList   
INNER JOIN  Reviews loc  WITH (NOLOCK) ON HeritageList.HeritageId = loc.HeritageId     
WHERE ([dbo].[DistanceBetween] (@Latitude,@Longitude,Latitude,Longitude)) * @meters <= @Radius       
        
   IF(@TotalRows>0)     
   BEGIN     
        DECLARE @Partialxml XML       
    DECLARE @Totalxml XML       
    declare @Appendxml VARCHAR(100)       
    SET @Appendxml = '<HeritageList></HeritageList>';       
    set @[email protected]       
        
    SET @Partialxml = (SELECT  HeritageList.HeritageId, 
          
        
        
       Latitude as "Location/Latitude",       
       Longitude as "Location/Longitude",       
       Country as "Location/Country",       
       [State] as "Location/State",       
       City as "Location/City",       
       Postcode as "Location/Postcode",       
       [Address] as "Location/Address",     
       (Cast(Round((([dbo].[DistanceBetween]           
        (@Latitude,@Longitude,Latitude,Longitude)) * @meters),2,1) as decimal(18,2))) as Distance     
       FROM dbo.HeritageList  INNER JOIN  Reviews loc   WITH (NOLOCK) ON HeritageList.HeritageId = loc.HeritageId     
       WHERE ([dbo].[DistanceBetween] (@Latitude,@Longitude,Latitude,Longitude)) * @meters <= @Radius     
         FOR XML PATH('Business'), ELEMENTS XSINIL)       
    SET @Totalxml.modify('insert sql:variable("@Partialxml")  as last into (/HeritageList)[1] ')       
      
    SELECT @Totalxml       
END     
    
END 
+1

什么是CDOC和店?你在哪里执行命令?我怀疑最后一行与sql命令无关,你正在查看一些现有值而不是命令的结果。如果您想检索结果,您必须执行comm.ExecuteScalar或comm.ExecuteReader –

+0

您可以共享您的存储过程吗? – Asif

+0

嘿!谢谢!我编辑了它..我正在尝试你的建议..再次感谢 –

回答

0

构建DataAdapter的,

SqlDataAdapter adpater=new SqlDataAdapter(comm); 
DataSet shop=new DataSet(); 
adapter.Fill(shop); 

XmlDocument cdoc = new XmlDocument(); 
cdoc.LoadXml(shop.GetXml()); 
+0

我已经使用过这个,但这不起作用。谢谢 –