我需要在一个函数中运行多个查询,是否必须为每个查询创建一个新的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();
}
}发布于 2011-05-04 09:45:05
有一个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
}
}
}
}当您处理许多结果集时,您会发现像这样将查询批处理在一起可以显著提高性能,但代价是增加了调用代码的复杂性。
https://stackoverflow.com/questions/5877584
复制相似问题