多个SQL查询asp.net c#

QPT*_*PTR 7 c# sql asp.net

我需要在一个函数中运行几个查询,我是否必须为每个函数创建一个新的SqlConnection?或者有一个连接,但不同的SqlCommands也可以工作?

谢谢,

编辑:这会有用吗?

       using (SqlConnection conn = new SqlConnection(connectionString))
      {
        conn.Open();

        using (SqlCommand cmd = new SqlCommand(query1, conn))
        {
            cmd.ExecuteNonQuery();
        }

        using (SqlCommand cmd = new SqlCommand(query2, conn))
        {
            cmd.ExecuteNonQuery();
        }

        using (SqlCommand cmd = new SqlCommand(query3, conn))
        {
            cmd.ExecuteNonQuery();
        }

    }
Run Code Online (Sandbox Code Playgroud)

Jer*_*emy 8

使用MDSN文档作为基础:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    string sql1 = "SELECT ID,FirstName,LastName FROM VP_PERSON";
    string sql2 = "SELECT Address,City,State,Code FROM VP_ADDRESS";

    using (SqlCommand command = new SqlCommand(sql1,connection))
    {
        //Command 1
        using (SqlDataReader reader = command.ExecuteReader())
        {
            // reader.Read iteration etc
        }

    } // command is disposed.

    using (SqlCommand command = new SqlCommand(sql2,connection))
    {

        //Command 1
        using (SqlDataReader reader = command.ExecuteReader())
        {
            // reader.Read iteration etc
        }

    } // command is disposed.

   // If you don't using using on your SqlCommands you need to dispose of them 
   // by calling command.Dispose(); on the command after you're done.

} // the SqlConnection will be disposed
Run Code Online (Sandbox Code Playgroud)


Jus*_*tin 2

拥有一个SqlConnection和多个SqlCommands就可以正常工作,但是您必须确保SqlDataReaders在尝试运行其他命令之前处理掉从先前命令返回的任何内容。

using (SqlConnection conn = new SqlConnection())
{
    conn.Open()

    using (SqlCommand cmd = new SqlCommand("SELECT myrow FROM mytable", conn))
    {
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            // Handle first resultset here
        }
    }

    using (SqlCommand cmd = new SqlCommand("SELECT otherrow FROM othertable", conn))
    {
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            // Handle second resultset here
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您也可以将命令合并为一批,然后处理多个结果集,如下所示:

using (SqlConnection conn = new SqlConnection())
{
    conn.Open()
    using (SqlCommand cmd = new SqlCommand("SELECT myrow FROM mytable; SELECT otherrow FROM othertable", conn))
    {
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            // Handle first resultset here, and then when done call
            if (reader.NextResult())
            {
                // Handle second resultset here
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当您处理许多结果集时,您会发现像这样批处理在一起的查询可以显着提高性能,但代价是增加调用代码的复杂性。