C#使用一个SqlConnection进行多个查询

时间:2018-02-28 04:37:51

标签: c# sqlconnection .net-4.6

如何正确使用一个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属性未初始化”

2 个答案:

答案 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)

这取决于你真正的意思/打算做什么。如果你的意思是批处理一组命令?是的,

H个。