2011-03-31 67 views
2

我开发与ASP.NET和MySQL的Web应用程序,但我不使用SqlClient提供程序。池与MySQL和ASP.NET MVC

我读的地方(我不记得在哪里),如果我需要建立一个连接池,我需要添加一些行到文件web.config

要进行连接,在每个模型中定义有一个连接字符串,这样的:

string sqlConnection = 
    "server=localhost; user id=root; password=***; database=test; pooling=true;Min Pool Size=0; Max Pool Size=60;"; 

并连接并做查询我执行以下操作:

MySqlConnection conection; 
conection = new MySqlConnection(sqlConnection); 
string query = "SELECT COUNT(*) FROM documents WHERE user_id = ?user_id; 
MySqlCommand cmd = new MySqlCommand(query, conection);` 

cmd.Connection.Open(); 
cmd.Prepare(); 
cmd.Parameters.Add("?user_id", userID); 
cmd.ExecuteReader(); 
... 
cmd.Connection.Close(); 

但我想打开连接池并使用连接池,我不想每次打开和关闭连接。

我把这个在web.config文件:

<connectionStrings> 
    <remove name="LocalMySqlServer"/> 
    <add name="LocalMySqlServer" 
     connectionString="Data Source=localhost; userid=root; password=***; database=test; Pooling=true; Min Pool Size=50; Max Pool Size=100;" 
     providerName="MySql.Data.MySqlClient"/> 
</connectionStrings> 

但是当我开始开发服务器,我没有看到任何MySQL Workbench连接。

这只有当我打电话的模式,打开连接发生。

什么是有连接池在启动时的方式吗?

+0

那么你能够连接并使用web.config中的连接字符串查询数据库? – 2011-03-31 15:10:07

+0

Thomas Li,不,我不知道该怎么做,实际上我在每个模型上定义了连接字符串,但我认为这不是正确的方法。 – Pipeline 2011-03-31 16:36:34

回答

3

我想你误会连接池的概念。

连接池是由数据库驱动程序或提供者提供的机制。您仍然需要连接,但是每次创建连接时,驱动程序/提供程序都不会创建全新的连接,而是维护一个已准备好的预热对象池,并将其中一个连接起来。

这一切都悄然发生在封面之下。

更新:

要从web.config消耗的连接字符串:

string sqlConnection = 
    ConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString; 

您可能需要添加引用System.Configuration

enter image description here

,并添加:

using System.Configuration; 

返回类文件的顶部。

这是一个.NET 4.0项目,但其原理与.NET 2.0相同。

1

您可以尝试将Min Pool Size = 0更改为更大的值。这应该确保池中始终有X个连接可用。

0

尝试:

System.Configuration.ConfigurationManager.ConnectionStrings["LocalMySqlServer"]