我在web.config文件中创建了连接字符串。
<connectionStrings>
<add name="Test_registration"
connectionString="Data Source=DOTNET\SA;Initial Catalog=Test2009;User ID=trainee;Password=trainee123"
providerName="System.Data.SqlClient"/>
</connectionStrings>
在CS文件中创建一个用于打开连接的构造函数。
public main_connection()
{
sql_conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Test_registration"].ConnectionString);
sql.conn.open();
}
但是我在服务器上运行程序时遇到连接池错误。
谁能告诉我应该在哪里关闭连接?在我的项目cs文件的web.config文件中,我打开连接?
我只想写一次close()语句,因为我只启动一次连接。
答案 0 :(得分:1)
在这里设置连接字符串。
然后使用以下代码。 (sql_conn是连接对象的名称)
try { sql_conn.Open(); }
catch (Exception)
{
if (sql_conn.State != ConnectionState.Closed)
{
sql_conn.Close();
sql_conn.Open();
}
}
答案 1 :(得分:0)
我认为你应该打开一个连接,执行你的sql语句并立即关闭连接。提供者负责连接池。
答案 2 :(得分:0)
像Raj说的那样,每当你有一个语句要运行时,我建议打开连接,然后再关闭它 - 这是进行数据库查询的最常用方法。
话虽这么说,如果您希望一直打开Connection,您应该在程序退出时关闭它(或者在网站的情况下,在应用程序关闭,卸载和类似的Global.Asax中关闭它) (不记得有多少,因为我从来没有这样做过)
您的web.config不会自动关闭它!
所有这些说法我仍然认为你应该考虑这样的结构(伪代码):
using (var conn = OpenConnection())
{
using (var cmd = CreateCommand(conn))
{
RunQuery();
}
}
当您将Connection和Command置于使用语句中时,它们将被正确关闭(包括您的连接),并且如果代码中出现异常,您不会面临数据库服务器上存在死连接的风险。
显然,try-finally结构也会这样做,使用起来更漂亮: - )