在Dot Net前端执行程序的更好方法

时间:2014-11-27 08:06:08

标签: .net sql-server

我有一个用C#.Net构建的表单,它有大约40个控件,所有控件数据值都来自sql server数据库。 以下哪项是更好的方法

  1. 编写一个过程并为过程中的每个控件添加所有查询,以便它们按顺序执行并将结果作为数据集获取,最后循环控制并与每个数据表绑定。
  2. 例如:

    connection.Open
    
    DataSet ds = ExecuteProc("SomeProc")
    control1.DataSource=ds.Tables(0)
    control2.DataSource=ds.Tables(1)
    control3.DataSource=ds.Tables(2)
    .
    .
    .
    .
    connection.Close
    
    1. 为每个控件编写程序并绑定它们,但使用线程技术使它们并行执行,但在这种情况下,对于每个程序,我们需要在执行时打开和关闭每个程序的连接。
    2. 例如:

      all running parallely:
      
      connection.Open
      DataSet ds = ExecuteProc("SomeProc1")
      control1.DataSource=ds.Tables(0)
      connection.Close
      
      connection.Open
      DataSet ds = ExecuteProc("SomeProc2")
      control2.DataSource=ds.Tables(0)
      connection.Close
      
      connection.Open
      DataSet ds = ExecuteProc("SomeProc3")
      control3.DataSource=ds.Tables(0)
      connection.Close
      

      您能否帮助我找到所提方法的答案,还是有其他更好的方法可以更快的速度实现这一目标?

      提前致谢

2 个答案:

答案 0 :(得分:0)

第二种方法是更好的方法。由于连接池,打开/关闭连接是一种非常便宜的操作。 创建连接是个大家伙。

答案 1 :(得分:-1)

看看你的历史,你会遇到许多先入为主的观念,背景不够。 “线程化”对于你来说是一个嗡嗡声,你想拥有它。

如果我必须在两个选项之间做出选择,我会选择前者。引入网络延迟(两种方式!)可能相当昂贵,而且您一次只能讨论几十个和几十个查询。

但是,我愿意打赌你实际上并不需要40张不同的牌桌。我打赌你可以把所有数据放在一张桌子上。我的意思是... 40个数据网格,你甚至没有在屏幕上为他们使用理智的用户界面,如果你没有一个理智的用户界面,修复它。我敢打赌你的控件只是文本框或标签或其他东西,所以你只需要为每个控件返回一个单元格就可以了。