2010-06-01 4 views
0

J'ai une page dans asp.net (formulaires Web) qui ne possédait jusqu'ici qu'une base de données pour les données.Modifier dynamiquement la chaîne de connexion SqlDataSource dans asp.net

Ainsi, tous les contrôles nécessitant quelque chose de la base de données utilisent une source de données et la même chaîne de connexion.

<asp:SqlDataSource id="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:DefaultConnectionString %>" 
        ProviderName="System.Data.SqlClient" 
             SelectCommand="SELECT ... "> 
</asp:SqlDataSource> 

Jusqu'à présent, je ne besoin d'une chaîne de connexion puisque je n'avais qu'une seule base de données, mais cela a changé depuis que je veux certains utilisateurs de se connecter à la base de données A et d'autres à la base de données B

Quelle serait la bonne moyen de s'y prendre? De préférence, sans beaucoup de changements ...

Répondre

1

Vous pouvez modifier programatically après avoir déterminé que celui que vous voulez utiliser, à savoir

SqlDataSource1.ConnectionString = "whateveryouwant"; 

Il ne doit pas être mis en ligne dans le contrôle.

+0

Lorsque le cycle de vie de la page serait le meilleur moment pour le faire? J'ai eu cette manière comme une sauvegarde puisque je dois aller chercher toutes les sqlDataSources et les changer à la main. –

+0

Où allez-vous déterminer les informations d'utilisateur? Très probablement après cela, pourrait être au niveau de l'application dans Global.asax au début de la session? ou au niveau de la page sur Page_Load, je ne suis pas sûr de votre conception, donc je lance des suggestions :) – kd7

+0

J'ai l'appartenance par défaut à asp.net (dans une 3ème DB), donc quand l'utilisateur se connecte en fonction de certains paramètres, je peux trouver base de données, il devrait appartenir. C'est mon premier site donc je ne sais pas grand chose sur Global.asax ou quoi que ce soit de ce genre ... pourriez-vous donner quelques liens peut-être? –

1

Sur votre page vous avez SqlDataSource1, et aussi dans votre web.config, vous devriez avoir:

<connectionStrings> 
    <add name="MyConectionString" connectionString="Data Source=127.0.0.1;Initial Catalog=DBNAME;User ID=userName;Password=PASS" /> 
</connectionStrings> 

Pour ajouter la chaîne de connexion à votre SqlDatasource1, dans le code derrière (fichier cs) utiliser le code suivant dans un instantané:

SqlDataSource1.ConnectionString = ConfigurationManager.ConnectionStrings["MyConectionString"].ConnectionString; 
+0

Bonjour! Pourriez-vous s'il vous plaît ajouter plus de contexte ou une explication pour votre réponse? –

+0

Sur votre page vous avez SqlDataSource1, et aussi dans votre web.config vous devriez avoir: ' ' et pour ajouter une chaîne de connexion à votre SqlDatasource1, vous utilisez le code ci-dessus. –

Questions connexes