如何正确使用一个SqlConnection
对象进行多次查询?
SqlConnection connection = new SqlConnection(connString);
static void SqlQuery(SqlConnection conn, string cmdString)
{
using (conn)
{
if (conn.State != ConnectionState.Open)
{
conn.Close();
conn.Open();
}
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = cmdString;
cmd.ExecuteNonQuery();
}
}
第一次调用后的函数SqlQuery
抛出System.InvalidOperationException
“ConnectionString属性未初始化”
答案 0 :(得分:6)
总之不要这样做
创建类SqlConnection
的新实例不会创建与SQL Server的新网络连接,而是租用现有连接(或创建新连接)。 .NET为您处理物理连接池。
完成连接后(您可以通过该连接发送多个查询)Close()
或Dispose()
(或最好使用using{}
块)。
缓存SqlConnection类的实例没有必要,也没有好的做法。
<强>更新强>
对于您的方法,这是一个更好的模式,您不必担心连接状态
static void SqlQuery(string cmdString)
{
using (var connection = new SqlConnection(connString))
using (var cmd = connection.CreateCommand(cmdString, connection))
{
connection.Open();
// query
cmd.ExecuteNonQuery();
}
}
答案 1 :(得分:1)
这取决于你真正的意思/打算做什么。如果你的意思是批处理一组命令?是的,
SqlCommand
以及H个。