2011-03-15 79 views
4

如何將結果集從StoredProcedure合併到ASP.NET中的一個數據集中?如何將存儲過程的多個結果存儲到數據集中?

下面是我在asp.net

SqlDataAdapter adap = new System.Data.SqlClient.SqlDataAdapter("sp_Home_MainBanner_TopStory",con); 
adap.SelectCommand.CommandType = CommandType.StoredProcedure; 
adap.SelectCommand.Parameters.AddWithValue("@rows", 9); 

DataSet DS = new DataSet(); 

adap.Fill(DS, "Table1"); 
adap.Fill(DS, "Table2"); 

GridView1.DataSource = DS.Tables["Table2"]; 
GridView1.DataBind(); 

代碼即使有兩個適配器,我怎麼可能的結果組合成一個數據集?

+0

我不明白你的意思。這是一個數據集。 – 2011-03-19 02:21:39

回答

1

DataSet包含表。對於上面的例子,如果你有兩個SqlDataAdapter,每個調用一個存儲過程並像上面那樣存儲它們。

adapter1.Fill(DS, "Table1"); 
adapter2.Fill(DS, "Table2"); 

這將從第一個查詢中獲取表結果並將其作爲Table1存儲在DataSet DS中。然後它會將另一個Table(Table2)存儲在同一個DataSet中。要訪問您使用下面的代碼這些表:

DS.Tables["Table1"] //Or Table2, or whatever you name it during your Fill. 

你已經有正確的過程中,你只需要仰望如何DataSet中的作品,並決定如何你想打電話給你的信息。

如果您想將結果合併到一個DataTable中,您需要遍歷表併合並信息。

ex: 
DataTable combinedTable = new DataTable(); 
//Create columns 

foreach (DataRow row in DS.Tables["Table1"].Rows) 
{ 
    //Create rows? Copy information over? Whatever you want to do. 
} 
1

嘗試使用這樣的:

adapter1.Fill(DS, "Table1, Table2"); 

這在這裏工作這麼...

16

MS SQL我們創建像一個過程:

[ create proc procedureName 
    as 
    begin 
     select * from student 
     select * from test 
     select * from admin 
     select * from result 
    end 
] 

C#,我們編寫以下代碼檢索這些值在DataSet

{ 
    SqlConnection sqlConn = new SqlConnection("data source=(local);initial catalog=bj001;user id=SA;password=bj"); 
    SqlCommand sqlCmd = new SqlCommand("procedureName", sqlConn); 
    sqlCmd.CommandType = CommandType.StoredProcedure; 
    sqlConn.Open(); 
    SqlDataAdapter sda = new SqlDataAdapter(sqlCmd); 
    DataSet ds = new DataSet(); 
    sda.Fill(ds); 
    sqlconn.Close(); 

    // Retrieving total stored tables from a common DataSet.    
    DataTable dt1 = ds.Tables[0]; 
    DataTable dt2 = ds.Tables[1]; 
    DataTable dt3 = ds.Tables[2]; 
    DataTable dt4 = ds.Tables[3]; 

    // To display all rows of a table, we use foreach loop for each DataTable. 
    foreach (DataRow dr in dt1.Rows) 
    { 
     Console.WriteLine("Student Name: "+dr[sName]); 
    } 
} 
相關問題