2011-03-31 21 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"]