C # Data Connections Meilleure pratique?
Ok, donc c'est l'une de ces opinions sujets, mais en fonction de vos connaissances, de l'opinion, et la pratique actuelle, quelle est la meilleure façon de définir le scénario suivant?
Je suis en train de construire une vaste application de saisie de données, et par de vastes je veux dire que je n'ai que les bases de l'installation qui intègre autour de 15 à 25% de l'ensemble du programme et j'ai environ 15 formulaires sont en partie le programme d'installation. (Ils ont encore besoin de travail), je suis à l'aide de SQL Compact 4.0 comme mon backend de base de données, je n'ai pas vraiment besoin d'une plus vaste base de données que je ne suis pas stocker un MMO de données, et pour l'instant ce n'est qu'une application locale.
J'aimerais être en mesure de le configurer pour être affiché comme une seule fenêtre qui vient de changements à différentes pages basées sur un système de menu, mais je n'arrive pas à trouver un bon tutoriel sur comment cela pourrait se faire, donc si quelqu'un sait, merci de m'éclairer.
Le scénario en question, cependant, est de savoir comment vous connecter à des bases de données. Je suis l'aide de 2 SQLCE bases de données, qui stocke des données constantes qui est basé sur les services et le personnel, et un deuxième qui stocke l'évolution constante des données ou de nouvelles données qui est entré en fonction à la première base de données. J'ai vu beaucoup de différentes méthodes sur la façon de mettre en place et je suis actuellement en utilisant l'une dans laquelle j'ai la classe baseform que toutes les autres formes hérite. Dans le la classe baseform j'ai des méthodes et des variables qui sont communs à plusieurs formes afin de réduire la quantité de code qui se répète.
Cela comprend les chaînes de connexion pour les deux bases de données, et 2 méthodes d'ouvrir une connexion à l'un ou l'autre. Comme:
internal SqlCeConnection dataConn = new SqlCeConnection(@"Data Source = |DataDirectory|\opi_data.sdf");
internal SqlCeConnection logConn = new SqlCeConnection(@"Data Source = |DataDirectory|\opi_logs.sdf");
internal SqlCeCommand command;
internal void openDataConnection() //Opens a connection to the data tables
{
try
{
if(dataConn.State == ConnectionState.Closed)
dataConn.Open();
}
catch(SqlCeException ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
internal void openLogConnection() //Opens a connection to the log tables
{
try
{
if(logConn.State == ConnectionState.Closed)
logConn.Open();
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Alors à chaque fois que j'ai besoin d'une connexion ouverte, j'ai simplement appeler l'open méthode de connexion qui correspond à la base de données j'ai besoin d'accéder à et puis fermez-le dans une instruction enfin. De cette manière, un lien n'est jamais ouvert, pour très longtemps, juste quand c'est nécessaire. Bien sûr, cela signifie qu'il y a beaucoup d'appels à l'open d'autres méthodes de connexion. Alors, est-ce la meilleure façon de mettre en œuvre ce type de scénario, ou il y a de meilleures façons?
Est-il préférable de simplement ouvrir une connexion en tant que bientôt en tant que charge d'un formulaire puis de le fermer lorsque le formulaire se ferme? J'ai instances où de multiples formes sont ouvertes en même temps et chacun aurait probablement besoin d'une connexion ouverte, les bases de données donc, si l'on ferme ensuite les autres devraient être vissée de droite? Ou dois-je ouvrir une connexion à la fois des bases de données sur le lancement d'application? Toute entrée serait appréciée. Merci.
source d'informationauteur Josh C.
Vous devez vous connecter pour publier un commentaire.
Connexions sont mis en commun par .NET, pour les recréer en général n'est pas une opération coûteuse. Connexions tenir pendant de longues périodes de temps, cependant, peuvent causer des problèmes.
La plupart des "meilleures pratiques" parlez-nous d'ouvrir des connexions plus tard possible (juste avant l'exécution de SQL) et de fermeture dès que possible (à droite après le dernier bit de données ont été extraites).
Un moyen efficace de faire cela automatiquement est avec
using
états:De cette façon, les ressources sont fermés et éliminés, même si une exception est levée.
En bref, l'ouverture de la connexion lorsque l'application s'ouvre ou lors de chaque ouverture de ce formulaire n'est probablement pas la meilleure approche.
Je pense que c'est mieux de les ouvrir sur le lancement d'applications, depuis les choses dont vous avez besoin à partir de votre base de données?Je ne suis pas un expert là-dedans, c'est juste mon avis... j'ai programmé quelques applications similaires et fait le lien au début du formulaire principal. La seule forme où j'ai créé une connexion distincte a été le formulaire de connexion.