【问题标题】:How can I execute multiple database requests in ASP.NET C#?如何在 ASP.NET C# 中执行多个数据库请求?
【发布时间】:2009-03-04 22:46:16
【问题描述】:

在我编写的每个 ASP.NET 应用程序中,在将信息输出到网页上之前,我都会向数据库发出一些请求。

例如:

var DataTable1 = GetDataTable("Select * From Customers");
var DataTable2 = GetDataTable("Select * From Products");
var DataTable3 = GetDataTable("Select * From Orders");

据我所知,上面的代码会对数据库进行 3 次单独的访问,并且会一个接一个地进行。

我是否可以将我的参数化 SQL 语句收集在一起,然后只访问一次数据库服务器?

【问题讨论】:

  • 更好的描述方式是“一次访问多个数据库请求”,而不是“并行数据库请求”。 “平行”意味着它们实际上是同时发生的,这似乎不是你想要的;也有办法做到这一点,尽管这对网页来说意义不大。
  • 感谢您的提醒。你的权利。我改了标题:)

标签: asp.net sql


【解决方案1】:
var SqlString = "SELECT * FROM Customers; SELECT * FROM Products; SELECT * FROM ORDERS;");
var ds = GetDataSet(SqlString);
var DataTable1 = ds.Tables(0);
var DataTable2 = ds.Tables(1);
var DataTable3 = ds.Tables(2);

【讨论】:

    【解决方案2】:

    我的解决方案:

    SqlConnection con = new SqlConnection("Server=CLASS-III-WKS10\\SQLEXPRESS;Initial 
    Catalog=wind;Integrated Security=True");
    int[] id=new int[9];
    int i = 0;
    page_load()
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("select *from windmill", con);
        SqlDataReader rd = cmd.ExecuteReader();
        while (rd.Read())
        {
            id[i] = rd.GetInt32(9);
            i++;
            //MessageBox.Show(id.ToString());  
        }
        rd.close();
        SqlCommand cmd1 = new SqlCommand("Update windmill set State='Stopped',PmState='Not Available'where Id=0", con);
        cmd1.ExecuteNonQuery(); 
    }
    

    【讨论】:

      【解决方案3】:

      使用分号分隔 SQL 语句和 reader.NextResult 获取每个集合。您的代码最终会看起来像这样。

          Using con As New SqlConnection
              Using cmd As New SqlCommand("Select * From Customers; Select * From Products; Select * From Orders")
                  Using reader = cmd.ExecuteReader
                      Dim dt1 As DataTable
                      dt1.Load(reader)
      
                      reader.NextResult()
      
                      Dim dt2 As DataTable
                      dt2.Load(reader)
      
                      reader.NextResult()
      
      
                      Dim dt3 As DataTable
                      dt3.Load(reader)
      
                  End Using
              End Using
          End Using
      

      【讨论】:

        【解决方案4】:

        创建一个线程类并在该类中放置一个接受字符串查询作为输入的方法: 然后创建一个 Thread 对象并启动该对象。

        看看这个http://msdn.microsoft.com/en-us/library/aa645740(VS.71).aspx

        【讨论】:

        • 这仍然会访问数据库 3 次,除非它会同时进行。不是我正在寻找的解决方案。
        猜你喜欢
        • 2021-12-24
        • 1970-01-01
        • 2012-09-14
        • 2017-12-20
        • 2022-10-07
        • 1970-01-01
        • 2015-04-10
        • 1970-01-01
        相关资源
        最近更新 更多