我正在写生成网站地图的程序。 为了避免我使用MSSQL Server来存储所发现的链接重复。 在此过程中它可能读取和写入数百万的链接和阅读和写作的过程中相互之间可以非常小的差距(我的意思是非常微小的每次访问数据库之间的时间)。
我想知道如果在程序启动时,我可以打开连接,并在年底关闭。 请考虑建立一些网站地图可能需要几天才能完成。 抑或是明智的,打开和关闭连接,每次我想访问数据库?
顺便说一句,我使用的是本地的SQL Server。
我正在写生成网站地图的程序。 为了避免我使用MSSQL Server来存储所发现的链接重复。 在此过程中它可能读取和写入数百万的链接和阅读和写作的过程中相互之间可以非常小的差距(我的意思是非常微小的每次访问数据库之间的时间)。
我想知道如果在程序启动时,我可以打开连接,并在年底关闭。 请考虑建立一些网站地图可能需要几天才能完成。 抑或是明智的,打开和关闭连接,每次我想访问数据库?
顺便说一句,我使用的是本地的SQL Server。
回答你的问题是连接池功能。
它始终是最好只是打开连接需要时,访问数据,关闭并立即处置连接
事实上,具体的工作模式存在
using(SqlConnection con = new SqlConnection(.....))
{
... do your work with the database here ....
}
在使用语句确保在开口中创建的对象被关闭以及设置在封闭括号。 即使在数据库代码发生异常 。
这并不意味着你不能尝试优化代码。 例如,你可以收集一些的Sitemaps在一起,他们在短短的一个镜头写的,但通常最好是尽快遵循一个简单的工作模式,完成这项工作,并担心以后进行优化。
你可以用下面的代码工作:
SqlConnection conn;
try
{
conn = new SqlConnection(_dbconnstr));
}
catch
{
//exceptions are bubbled
throw;
}
finally
{
//Dispose is always called
conn.Dispose();
}
希望这可以帮助!
每次使用它的时候,我通常打开和关闭连接。 当有多个连接周围释放资源必须做到的。 如果你是唯一一个,你可以让你的资源。 注意设置超时连接。
祝你好运的家伙!
这是更好地打开/关闭连接。 有一个在基平连接打开没有任何好处。 ADO.NET连接池 (这是在默认情况下)会照顾它连接的关闭和时间。
从MSDN
注意建议你总是使用它关闭连接当您完成,以便使连接返回到池中。 这可以通过使用任一连接对象的关闭或处置方法来完成。 未明确关闭的连接可能不会添加或返回到池中。 例如,已经超出了范围,但尚未明确关闭的连接将仅在最大池大小已达到返回到连接池和连接仍然有效。
如果你知道它会需要一段时间,约写入本地数据表,然后当你到达一个阈值时,写的所有记录到数据库中的内容。
甚至写(您选择的格式)的信息到本地文件,然后写一个文件到数据库中的一个镜头(或者多个镜头,如果你想这样做,每隔X记录或y分钟。)