SQL连接到数据库重复

use*_*084 1 c# sql-server asp.net connection ado.net

好吧,现在我使用SQL数据库从不同的表中获取值...所以我建立连接并得到如下值:

DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConfigurationManager.ConnectionStrings["XYZConnectionString"].ConnectionString;
connection.Open();
SqlCommand sqlCmd = new SqlCommand("SELECT * FROM Machines", connection);
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

sqlCmd.Parameters.AddWithValue("@node", node);
sqlDa.Fill(dt);
connection.Close();
Run Code Online (Sandbox Code Playgroud)

所以这是页面上的一个查询,我在页面上调用了许多其他查询.

所以我每次都需要打开和关闭连接...... ???

如果不是这部分也是共同的:

DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection();
connection.ConnectionString = ConfigurationManager.ConnectionStrings["XYZConnectionString"].ConnectionString;
connection.Open();
Run Code Online (Sandbox Code Playgroud)

我可以把它放在一个函数中并调用它代码..代码看起来更干净...我尝试这样做但我得到的错误如下:

当前上下文中不存在连接.

有什么建议???

谢谢

Mik*_*all 6

  1. 你绝对可以共享"开放连接"代码,没有理由复制它.
  2. 使用ASP.NET的SQL Server提供程序,每次"关闭"连接的开销很小.它只返回与进程的连接池的连接(参见此处),因此打开下一个连接将使用非常少的开销.我认为在每次操作后关闭连接是一种好习惯


Dus*_*ine 5

我用"使用".您可以在里面包含任意数量的查询.完成后,它将为您清理.

using (SqlConnection cn = new SqlConnection(connectionString))
{
    using (SqlCommand cm = new SqlCommand(commandString, cn))
    {
        cn.Open();
        cm.ExecuteNonQuery();
    }
}
Run Code Online (Sandbox Code Playgroud)