如何在ASP.NET C#中执行多个数据库请求?

如何在ASP.NET C#中执行多个数据库请求?,asp.net,sql,Asp.net,Sql,在我编写的每个ASP.NET应用程序中,在将信息输出到网页之前,我都会向数据库发出大量请求 例如: var DataTable1 = GetDataTable("Select * From Customers"); var DataTable2 = GetDataTable("Select * From Products"); var DataTable3 = GetDataTable("Select * From Orders"); 据我所知,上面的代码将对数据库进行3次单独的访问,并将一次

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

例如:

var DataTable1 = GetDataTable("Select * From Customers");
var DataTable2 = GetDataTable("Select * From Products");
var DataTable3 = GetDataTable("Select * From Orders");
据我所知,上面的代码将对数据库进行3次单独的访问,并将一次接一次地进行访问


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

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


检查此项

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


检查此项

使用分号分隔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

使用分号分隔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
我的解决方案:

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(); 
}
我的解决方案:

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次访问,但它会同时进行。这并不是我想要的解决方案。这仍然需要3次访问数据库,除非它可以同时访问。这不是我想要的解决方案。更好的描述方法是“一次访问多个数据库请求”,而不是“并行数据库请求”。“平行”意味着它们都在同一时间发生,这似乎不是你想要的;也有很多方法可以做到这一点,不过这对于网页来说没有什么意义。谢谢大家的提醒。你的权利。我更改了标题:)更好的描述方法是“一次访问中的多个数据库请求”,而不是“并行数据库请求”。“平行”意味着它们都在同一时间发生,这似乎不是你想要的;也有很多方法可以做到这一点,不过这对于网页来说没有什么意义。谢谢大家的提醒。你的权利。我更改了标题:)