簡體   English   中英

有關在選項卡式視圖中顯示SQL Server數據的問題

[英]Question about showing sql server data in a tabbed view

我正在使用c#創建一個清單應用程序,該應用程序從sql server中提取其信息。 我使它成為選項卡式視圖,每個選項卡代表一個不同類型的項目。 我已經包含了一些代碼,我想弄清楚的是,有沒有更好的方法呢? 我認為我的工作方式是正確的,即使它可行。 我對每個選項卡的所有查詢都是存儲過程。 其次,如何通過網格插入和更新數據庫?

 public partial class InventoryWindow : Window
{

    private InventoryDS InvDS;

    private String connString = "server=PC-server;database=Inventory;user=user;password=password";

    String sqlString_Routers = InventoryOutputQuery.InventorySummary_Routers();

    public InventoryWindow()
    {
        InitializeComponent();

        if (dgDataView != null)
        {
            SqlConnection con = new SqlConnection(connString);
            SqlDataAdapter adpt = new SqlDataAdapter(sqlString_Routers, con);
            DataSet ds = new DataSet();
            adpt.Fill(ds, sqlString_Routers);
            dgDataView.DataContext = ds;
        }
    }

    private void showTaps()
    {
        String sqlString_Taps = InventoryOutputQuery.InventorySummary_Routers();

        SqlConnection con = new SqlConnection(connString);
        con.Open();
        SqlCommand cmd = new SqlCommand(sqlString_Routers, con);
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        dgDataView.DataContext = dt;
        con.Close();
    }

    private void showPower()
    {
        String sqlString_Power = InventoryOutputQuery.InventorySummary_Power();

        SqlConnection con = new SqlConnection(connString);
        con.Open();
        SqlCommand cmd = new SqlCommand(sqlString_Power, con);
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        dgDataView.DataContext = dt;
        con.Close();
    }

    private void showSwitches()
        {
            String sqlString_Switches = InventoryOutputQuery.InventorySummary_Switches();

            SqlConnection con = new SqlConnection(connString);
            con.Open();
            SqlCommand cmd = new SqlCommand(sqlString_Switches, con);
            SqlDataReader dr = cmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(dr);
            dgDataView.DataContext = dt;
            con.Close();
        }

下面是我如何將其綁定到網格:

public void BindGrid(string view)
{
    switch (view.ToUpper())
    {
        case "Routers":
            showTaps();
            break;
        case "POWER":
            showPower();
            break;
        case "SWITCHES":
            showSwitches();
            break;
        case "HUBS":
            showHubs();




private void tcDataView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            TabItem ti = tcDataView.SelectedItem as TabItem;

            if (ti != null)
                BindGrid(ti.Header.ToString());
        }
                    break;

我的建議是謹慎處理SqlConnection。 這是一種稀缺資源,如果我們不小心的話,它很快就會用完。 請將sql代碼包裝在using塊中,例如:

using (SqlConnection con = new SqlConnection(connString))
{
    SqlDataAdapter adpt = new SqlDataAdapter(sqlString_Routers, con);
    DataSet ds = new DataSet();
    adpt.Fill(ds, sqlString_Routers);
    dgDataView.DataContext = ds;
}

以下鏈接將更詳細地說明“ using”塊的作用。

http://www.codeproject.com/KB/cs/tinguusingstatement.aspx

暫無
暫無

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

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