Наличие одного 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
}
}
}
В качестве альтернативы вы можете объединить свои команды в один пакет и вместо этого обработать несколько результирующих наборов, например:
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
}
}
}
}
Когда вы обрабатываете много наборов результатов, вы обнаружите, что группирование таких запросов может значительноповысить производительность, однако это достигается за счет дополнительной сложности вашего кода вызова.