2008-11-16 5 views
0

J'ai une liste déroulante et une balise littérale dans un panneau de mise à jour. Dans l'événement de modification de sélection de la liste déroulante, actualisez la base de données et repeusez la balise littérale, puis appelez UPdatePanel.Update(). Ci-dessous, est-il possible que je puisse éviter de devoir créer une nouvelle Oledbconnection chaque fois que cela semble lent. Puis-je réutiliser et stocker:Panneau de mise à jour ajax ajax partageant une connexion à une base de données

  1. DataSource
  2. La connexion à la page.

Si oui, comment puis-je conserver cet état entre les appels de l'interface graphique vers le serveur? Voici mon code de modification de sélection ci-dessous

protected void cboPeople_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string dataSource = ConfigurationSettings.AppSettings["contactsDB"]; 
    var objConn = new OleDbConnection(dataSource); 
    string id = People[cboPeople.Text]; 
    UpdateLiteral(objConn, id); 
} 

Répondre

1

Avec .NET est pas une bonne idée de garder votre connexion en vie plus longtemps que les besoins. Une bonne pratique serait de mettre une déclaration à l'aide autour d'elle (il obtient toujours nettoyé):

string dataSource = ConfigurationSettings.AppSettings["contactsDB"]; 
using(var objConn = new OleDbConnection(dataSource)) 
{ 
    string id = People[cboPeople.Text]; 
    UpdateLiteral(objConn, id); 
} 

.NET utilise connection pooling, ce qui signifie que lorsque vous fermez/Éliminez de la connexion, il ne se ferme pas réellement la connexion, plutôt le réinitialise et l'ajoute à la piscine. La prochaine fois qu'une connexion est nécessaire, elle est utilisée depuis la piscine. Donc, les frais généraux ne sont pas aussi importants que vous le pensez et ils ne sont pas lents. En fait, vous constaterez qu'il utilisera la même connexion tant que seul un à la fois est nécessaire.

Le danger de maintenir les connexions ouvertes est qu'elles ne se ferment jamais, et dans des situations très demandées, vous êtes à court de connexions.

0

Vous devez recréer ceci pour chaque demande. Vous avez un état moins serveur. vous ne savez jamais quand ou si votre client rappellera. Vous ne souhaitez pas conserver une connexion ouverte à la base de données et vous ne pouvez pas simplement gérer la multiplication des clients tout en conservant une connexion à la base de données.

Pour déployer haute performance applications, vous devez utiliser la mise en commun connexion . Lorsque vous utilisez le .NET Framework Data Provider pour OLE DB, vous ne devez pas activer la connexion pooling car le fournisseur gère automatiquement. Pour plus d'informations sur l'utilisation de la connexion de connexion avec .NET Fournisseur de données de cadre pour OLE DB, voir OLE DB, ODBC et Oracle connexion pool (ADO.NET). De OleDbConnection Class

+0

qu'en est-il de l'utilisation du dictionnaire viewState? – leora

+0

Il n'y aurait aucun moyen de le récupérer si l'utilisateur n'est jamais revenu sur la page. –

Questions connexes