2010-12-10 55 views
0

Dans textbox une classe que je l'ai défini la chaîne de connexion comme celui-ciEn prenant la valeur de chaîne de connexion de

SqlConnectionStringBuilder objConnectionString = new SqlConnectionStringBuilder(); 
      objConnectionString.DataSource = localServer; ; 
      objConnectionString.UserID = userName; 
      objConnectionString.Password = password; 
      objConnectionString.InitialCatalog = selectedDatabase; 

où serveur local = txtHost; - DataSource USERNAME = txtUsername; password = txtPassword;

Mais dans mon autre projet que je veux accéder aux commandes de ce projet

Actuellement, je suis connecté avec le db comme celui-ci

using(var sConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"])) 

Mais je veux le faire de telle sorte qu'il prendrait la valeur directement des champs de saisie utilisés dans un autre projet

en attente de vos suggestions ..... peut-il être fait ..

Répondre

0

Vous ne BNE abble à faire ceci, sauf si vous passez les contrôles réels à la méthode dans l'autre projet. Pourquoi ne pas passer l'objet SqlConnectionStringBuilder que vous avez configuré auparavant à la méthode appelée?

0

Dans votre formulaire avec la zone de texte, vous devrez créer des propriétés pour accéder aux valeurs à partir du formulaire, par ex.

public string Server 
{ 
    get 
    { 
     return this.txtHost.Text; 
    } 
} 

Vous aurez également besoin de passer une référence du formulaire à votre autre projet, que ce soit en faisant référence au projet ou à l'aide d'une interface partagée entre les deux.

Dans votre projet où vous voulez construire la chaîne de connexion, vous aurez besoin d'une certaine façon de recevoir la référence au formulaire, comme

public void RunMyQuery(MyForm form) 
{ 
    var objConnectionString = new SqlConnectionStringBuilder(); 
    objConnectionString.DataSource = form.Server; 
} 

Si vous avez le temps, envisagez de créer un nouveau projet qui contient interfaces partagées, vous pouvez donc créer une interface telle que

public interface IConnectionStringPartProvider 
{ 
    string Server { get; } 
    ... other parts 
} 

et mettre en œuvre cette interface sur votre formulaire

public partial class Form1 : Form, IConnectionStringPartProvider 

Ensuite, vous n'avez pas besoin de référencer votre projet de formulaire dans votre classe logique, laissez simplement les deux projets référencer le projet partagé.

De cette façon, votre méthode de recherche pourrait être remplacé par

public void RunMyQuery(IConnectionStringPartProvider provider) 
{ 
    var objConnectionString = new SqlConnectionStringBuilder(); 
    objConnectionString.DataSource = provider.Server; 
}