2014-10-10 78 views
0

我有一個存儲過程返回5分或6的結果:C#的數據集的多個結果

SELECT 1 ..... 

SELECT 2 ..... 

SELECT 3 ..... 

SELECT 4 ..... 

SELECT 5 ..... 

此結果中現在,在C#代碼我餵養數據集。

static DataSet GetData() 
{ 
    DataSet ds_Data = new ds_Data(); 
    IDBManager dbManager = ConnectDB(); 

    try 
    { 
     dbManager.Open(); 
     ds_Data = dbManager.ExecuteDataSet(CommandType.StoredProcedure,"sp_GetData"); 
    } 
    catch (Exception ex) 
    { 
    } 
    finally 
    { 
     dbManager.Close(); 
     dbManager.Dispose(); 
    } 

    return ds_Data; 
} 

現在我需要給DataSet中的每個DataTable命名。我如何處理例如。 SELECT 2不返回行(當其他SELECT語句不返回行時可能發生)?我需要SELECT 1將轉到Table1Name,SELECT 2轉到Table2Name等。

+0

如果沒有行,爲什麼它很重要? – DavidG 2014-10-10 10:30:22

+0

ds_Data.Tables [0] .TableName =「T1」; ? – artm 2014-10-10 10:31:24

+0

如果其中一個表將爲空,則C#代碼將返回表[i]無法找到或類似的錯誤。 – ironcurtain 2014-10-10 10:35:33

回答

0

我在我的代碼中發現問題。 DataSet即使沒有行也能正確返回。問題出在LINQ to DataTable上。我錯誤地分配表名稱。我從數據庫下載數據後決定命名錶。現在一切正常。

0

據我所知,從存儲過程中,你不能這樣做。

但是,您可以在檢索DataSet後設置名稱,然後再使用它們。 ds.Tables [0] .TableName =「NameofTable1」;

+0

我知道我無法從存儲過程中獲得此信息。我的問題是我需要動態設置表名。我需要知道,如果SELECT 3沒有返回任何行以不給該表Table3Name。 – ironcurtain 2014-10-10 10:34:21

+0

你不能寫if-else邏輯來檢查表是否有行。 – jadavparesh06 2014-10-10 10:35:33

+0

我可能會錯過一些東西,但從我發現的情況來看,例如,如果SELECT返回沒有行,C#將SELECT 4視爲Table 3。所以這是我的問題。我認爲,當我想使用if-else邏輯時,它會有很多行。 – ironcurtain 2014-10-10 10:38:36