簡體   English   中英

VS 2010中的多個存儲過程

[英]Multiple stored procedures in VS 2010

我是Visual Studio 2010中使用C#的新手,所以我的知識非常有限。 我正在尋找一個程序來運行和導出SQL Server 2008中的多個存儲過程-還具有一個不錯的界面。 我不確定的是如何最好地做到這一點?

我當時在想我想要一個帶有樹視圖和數據網格視圖的表單,然后執行存儲過程。 僅使用一個查詢就可以很好地工作-但是我的問題是如何通過多個查詢來最好地做到這一點? 我不希望每個存儲過程都有不同的datagridviews(我有很多)。 我希望能夠在樹形視圖中選擇一個不同的存儲過程,並更改datagridview中的數據,而不必每次都運行存儲過程。 其中一些非常耗時(> 1分鍾)。 所以我想問的是,是否可以將所有數據立即加載到程序中? 我可以使一個數據集容納一個以上的表嗎?還是我必須為所有存儲過程創建不同的數據集?

與其一次將所有數據加載到程序中,不如要在第一次運行查詢時將查詢結果緩存 這樣一來,人們不必等待所有內容加載完畢,就可以查看一個數據集。

您現在描述的場景是,當您單擊樹視圖中的特定項目時,將運行相關的SQL,並且結果集合將綁定到您的datagridview,從而清除掉所有先前的數據。

緩存的實踐會插入一個“如果我還沒有擁有它”層和一種存儲方法。 像這樣:

public class MyResultClass
{
    public string Column1 { get; set; }
    public string Column2 { get; set; }
}

private static readonly Dictionary<string, IEnumerable<MyResultClass>> 
    CachedResults = new Dictionary<string, IEnumerable<MyResultClass>>();

protected void OnTreeViewSelectionChanged(object sender, EventArgs e)
{
    // I'm not overly familar with the treeview off the top of my head,
    // so get selectedValue however you would normally.
    var selectedValue = ????;
    IEnumerable<MyResultClass> results;

    // Try to find the already cached results and if false, load them 
    if (!CachedResults.TryGet(selectedValue, out results))
    {
        // GetResults should use your current methodology for getting the results
        results = GetResults(selectedValue);
        CachedResults.Add(selectedValue, results);
    }

    myGridView.DataSource = results;
}

注意:如果這是一個Web應用程序,而不是Winforms,則需要使用ConcurrentDictionary而不是Dictionary來確保此模式線程安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM