我应该把我的数据库连接字符串和我如何处理连接池



我正在开发一个我托管在IIS服务器上的asp.net应用程序。打开一个连接,我使用:

SqlConnection con = new SqlConnection("Server = INLD50045747A\SQLEXPRESS; 
Database = MyDatabase;User ID = sa; Password = Welcome1; Trusted_Connection = False;");
con.Open();

是否有可能将此连接字符串存储在某个地方,以便我不需要在每个aspx.cs文件中写入?我正在使用MSSQL数据库。

我正面临一个问题,上面写着:

从池中获得连接之前经过的超时时间。发生这种情况可能是因为所有池连接都在使用,并且已达到最大池大小

我在某处读到要求我将最大连接池增加到100。它会影响应用程序的性能吗?

您可能没有正确关闭打开的连接。

增加"池的大小"就像在瀑布下放一个更大的桶——它会有帮助,但几乎没有。

试着找出发生这种情况的地方:

con.Open();

如果不在try/catch语句中,则确保在try/catch语句中,并且包含finally语句。

try {
   con.Open();
   //several other data base releated
   //activities
} catch (Exception ex) {
  // do something
} finally {
  con.Close();
}

另外,为了避免使用finally块,您可以将SqlConnection包装在using语句中。

  using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["yourKey"].ConnectionString))
        {
            // write your code here 
        }

关于您关于连接字符串的问题,是的,将其存储在您的web.config

<connectionStrings>
<add name="name" connectionString="Data Source=;Initial Catalog=;User ID=sa;password=;Persist Security Info=True;Connection TimeOut=20; Pooling=true;Max Pool Size=500;Min Pool Size=1" providerName="System.Data.SqlClient"/>
</connectionStrings>

将其存储在web.config文件中,在connectionStrings部分:

<connectionStrings>
    <add name="name"
        connectionString="Data Source=;Initial Catalog=;User ID=sa;password=;Persist Security Info=True;Connection TimeOut=20; Pooling=true;Max Pool Size=500;Min Pool Size=1"
        providerName="System.Data.SqlClient"/>
</connectionStrings>

然后你就可以在你的代码中访问它了…

ConfigurationManager.ConnectionStrings["name"].ConnectionString

也可以使用

,它将自动处置对象

如果使用"using"则不需要con.close和all

  using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["yourKey"].ConnectionString))
        {
     // write your code here 
        }

将连接字符串存储在web中。配置文件。你可以找到很多这样的例子。检查属性。http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.71%29.aspx

谢谢Shankar

使用Both的帮助

try
{
 con.Open();
}
catch(Exception ex)
{
if(con.State== ConnectionState.Open)
con.Close();
}
finally
{
con.Close();
}

,并在Web中添加连接字符串。配置,在配置下。

是的,将它存储在网络中。配置文件,但要确保,如果有一个错误,它不显示网页的内容。配置文件给用户(从而向世界显示您的密码)

如果你在很多应用程序中使用相同的连接字符串,你可以考虑编写一个服务来提供连接字符串,这样你只需要在一个地方更改它们。

最好的选择是使用类型化设置。

打开项目属性。
进入设置选项卡。
添加新设置,以MainConnectionString为例,选择设置类型(ConnectionString)。在值中插入您的连接字符串或点击'…按钮,显示一个对话框来建立连接字符串。

现在你可以像这样在代码中引用你的连接字符串:

Settings.Default.MainConnectionString

如果你打开配置文件,你会看到

  <configuration>
    <connectionStrings>
      <add name="WebApplication1.Properties.Settings.MainConnectionString"
           connectionString="Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True"
           providerName="System.Data.SqlClient" />
    </connectionStrings>

你可以有这个连接字符串指定:

  • 为一个网站在自己的web.config.
  • 用于一组网站
  • 用于机器范围内的所有网站。
  • 用于机器上的所有应用程序:在machine.config.

如果你有很多应用程序连接到同一个数据库,并且安装在一个盒子上,这是很方便的。如果db位置改变,您只更新一个文件机。

最新更新