Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# sql连接长时间处于打开状态_C#_Sql Server 2008_Database Connection - Fatal编程技术网

C# sql连接长时间处于打开状态

C# sql连接长时间处于打开状态,c#,sql-server-2008,database-connection,C#,Sql Server 2008,Database Connection,我正在写一个生成网站地图的程序。为了避免重复,我使用MSSQL服务器来存储找到的链接。在这个过程中,它可能读写数百万个链接,读写过程中它们之间的间隔可能很小(我的意思是每次访问数据库之间的时间非常短) 我想知道我是否可以在程序启动时打开连接,并在程序结束时关闭连接。请考虑创建一些站点地图可能需要几天的时间完成。或者每次我想访问数据库时打开和关闭连接是否明智 顺便说一下,我正在本地使用sql server。您的问题的答案是该功能 最好在需要时打开连接,访问数据,关闭并立即处理连接 确实存在一种特定

我正在写一个生成网站地图的程序。为了避免重复,我使用MSSQL服务器来存储找到的链接。在这个过程中,它可能读写数百万个链接,读写过程中它们之间的间隔可能很小(我的意思是每次访问数据库之间的时间非常短)

我想知道我是否可以在程序启动时打开连接,并在程序结束时关闭连接。请考虑创建一些站点地图可能需要几天的时间完成。或者每次我想访问数据库时打开和关闭连接是否明智


顺便说一下,我正在本地使用sql server。

您的问题的答案是该功能

最好在需要时打开连接,访问数据,关闭并立即处理连接

确实存在一种特定的工作模式

using(SqlConnection con = new SqlConnection(.....))
{
   ... do your work with the database here ....
}
确保在洞口处创建的对象闭合并放置在闭合大括号处即使数据库代码中发生异常


这并不意味着你不能尝试优化你的代码。例如,您可以收集一些站点地图并一次性编写它们,但通常最好遵循一种简单的工作模式,尽快完成工作,稍后再进行优化。

您可以使用以下代码:

SqlConnection conn;
try
{
    conn = new SqlConnection(_dbconnstr));
}
catch
{
    //exceptions are bubbled
    throw;
}
finally
{
    //Dispose is always called
    conn.Dispose();
}

希望这有帮助

每次使用时,我通常会打开和关闭连接。 当周围有很多连接时,必须释放资源。 如果你是唯一一个,你可以保留你的资源。 注意设置连接超时


祝你好运

最好打开/关闭连接。Kiping连接打开没有任何好处。(默认情况下处于打开状态)将负责关闭哪个连接以及何时关闭

注意:建议您在以下情况下始终关闭连接: 您已完成使用,以便返回连接 去游泳池。可以使用“关闭”或“处置”按钮来完成此操作 连接对象的方法。未明确定义的连接 无法将已关闭的文件添加或返回到池中。例如,一个 已超出范围但未显式删除的连接 仅当最大值为 已达到池大小,连接仍然有效


如果您知道这需要一段时间,那么写入本地数据表,然后当达到阈值时,将所有记录写入数据库怎么样


甚至可以将信息写入本地文件(格式由您选择),然后一次性将该文件写入数据库(如果您希望每x记录或y分钟写入一次,也可以多次写入)。这正是我所需要的。非常感谢。看看Steve的答案,它很棒,我认为你也应该使用它。问题是你是否应该打开和关闭连接。不是怎么做的。