2017-10-05 30 views
1

在我的頁面上,我在一個屏幕上有多個組合/下拉菜單,所有組合/下拉菜單都從SQL中加載數據。例如,如果有20個組合,則20個時間數據庫將被調用以在一個請求中獲取數據。有沒有辦法在一次SQL命中中獲得所有組合數據?在一次打擊中獲取來自sql server的所有組合值

+0

在我看來,你應該只能得到每個組合的選定值和文本,並且在一個查詢中很容易。這足以填寫表單,但如果您嘗試編輯表單,那麼您可以根據請求獲取每個組合的值(如單擊,關注組合等),並在此時填充它。 – Arkadiusz

+0

請回顧[如何創建一個最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)並修改您的問題。 – jhenderson2099

+0

我認爲在單個查詢中獲得20個組合框的數據是相當具有挑戰性的。查詢本身不是什麼大不了的事,但接下來呢?您將不得不將所有數據拆分到每個組合框。這聽起來對我來說不是一個好計劃。如果您擔心性能問題,則可以隨時緩存組合框的數據,以避免被迫重複提取相同的數據。但同時,填充組合框的查詢應該非常簡單快捷。 –

回答

1

Atually可以從存儲過程(我說的是MS SQL)

喜歡的東西

create procedure SampleDataSetResult 
as 
begin 
select * from table1 
select * from table2 
end 

那麼這可以食用像

返回兩個(或更多)數據表
var command = new SqlCommand(); 
command.CommandType = CommandType.StoredProcedure; 
command.CommandText = "SampleDataSetResult"; 
using (SqlDataAdapter da = new SqlDataAdapter(command)) 
{ 
    DataSet dataset = new DataSet(); 
    da.Fill(dataset); 

    // here you can use dataset tables 
} 

但是這種方法適用於數據庫的原始數據。它還包含沒有要分析名稱的數據表。唯一的辦法是在SP和源代碼之間同步數據表索引,並根據索引處理這些可數據表。像dataset.Tables[0] - 被視爲組合數據1等。這可能會很棘手,所有SP修改必須與源代碼同步。 在一頁上也有20個組合,聽起來有點奇怪。我猜想會顯示組合數據依賴於前一個組合中選擇的數據。

我看不出有什麼理由保存SQL查詢。如果你有網頁,那麼你可以嘗試使用MVC方法並用視圖模型方法調用包裝數據庫調用。