2009-05-21 3 views
0

J'ai une méthode de requête sql utilisant des adaptateurs de table de données SQL dans le fichier .xsd et doit être capable de changer dynamiquement la chaîne de connexion à cette méthode dans le code derrière. Je ne peux pas comprendre comment accéder aux propriétés des méthodes à partir du code derrière. La méthode est IsValidDock(), vérifie simplement la base de données pour un numéro de quai particulier et retourne booléen..net, SQLDataTableAdapters

fondamentalement, je suis instanciation de la requête dans mon code derrière par

Dim SQLCommands As New SQLDataTableAdapters.SQLCommands()

Je pensais que je pouvais obtenir les propriétés de la méthode par

SQLCommands. IsValidDock(). quelques propriétés. Cela ne fonctionne pas, des idées?

Répondre

0

La meilleure question, peut-être, cependant, pourquoi avez-vous besoin de changer cette connexion à la volée? Pourriez-vous simplement changer la définition et l'appeler un jour? Avez-vous plusieurs serveurs de base de données avec lesquels vous travaillez? Les chaînes de connexion sont stockées dans la configuration du projet. Par conséquent, si vous avez besoin d'une connexion différente dans vos environnements de test et de production, vous pouvez simplement disposer de deux fichiers de configuration.

En supposant que n'est pas une solution, lisez la suite ...

Si je me souviens bien, les objets SqlDataTableAdapter craché par l'analyseur XSD dans Visual Studio sont des sous-classes de SqlDataAdapter, sont-ils pas (vous pouvez découvrez dans Visual Studio en cliquant avec le bouton droit de la souris sur une référence et en choisissant "Aller à la définition")? Si c'est le cas, vous pouvez simplement créer une instance de la classe générée (il doit y avoir un fichier .cs ou .vb généré dans votre projet) et lui passer un objet SqlConnection personnalisé.

Il n'y a pas d'interface pour modifier la connexion d'un adaptateur de données après sa création. L'adaptateur ouvre la connexion lorsque vous faites tout ce qui en a besoin (appelez Fill(), Insert(), etc.) et seulement fermé lorsque le SqlDataAdapter est éliminé.

+0

Ceci est un programme de lecteur de codes barres personnalisé pour un entrepôt entreprises. Ils ont plusieurs entrepôts à travers le pays et veulent être en mesure de changer les connexions à la base de données en fonction de l'entrepôt dans lequel ils se trouvent à ce moment-là. Ils veulent être en mesure de faire une sélection sur l'application de poche qui identifie l'entrepôt et qui change la chaîne de connexion à cette base de données particulière. Je peux y parvenir en utilisant une classe de connexion sql personnalisée, mais le client aime vraiment utiliser sqldatablableadapters. Bien sûr, le concepteur original de l'application ne pouvait pas le faire fonctionner alors ils se sont tournés vers nous. – sdmiller

0

Les TableAdapters sont générés en tant que classes partielles, vous pouvez donc étendre ce TableAdapter et ajouter l'initialisation correcte pour la propriété connection de l'adaptateur.

Hope this helps Jaime