2009-11-20 13 views
0

Eh bien, je suis tring à faire quelque chose de gentil (gentil pour moi, simple pour vous les gars), on m'a dit fais-le, mais je n'ai aucune idée par où commencer. J'ai deux DDL dans une page, j'ai besoin sur page_load pour peupler les deux, chacun reçoit des données de la table déférente sans relaition entre eux (fournisseurs/catagories). Je sais comment le faire avec deux connexions DB, c'est facile, mais on m'a dit que je peux le faire avec une connexion. On ne me dit pas si c'est seulement la connexion qui est unie ou aussi que SP traite les deux tables dans un SP (ça ne me semble pas logique que je puisse le faire avec un seul SP ... mais que sais-je? ..lol) merci, ErezC#/sql-server, essayer d'obtenir des données à deux ddl de deux tables ... dans un sqlDataReder

+0

Voulez-vous dire une * connexion * ou une * requête/trajet vers la base de données *? –

Répondre

0

Je pense que vous pourriez séparer vos instructions SQL par un point-virgule.
par exemple. SELECT myColumns FROM Suppliers; SELECT otherColumns FROM Categories

Vous pouvez ouvrir le lecteur de données de manière régulière. Une fois que vous avez fini de lire toutes les données du 1er jeu de résultats, vous pouvez appeler NextResult pour essayer d'exécuter l'instruction suivante et obtenir le lecteur pour le 2ème jeu de résultats.

Note: Je n'ai pas fait cela. Mais c'est ce que je peux faire de la documentation.

+0

Super, 10x homme ...... c'est parfait .... fonctionne comme un charme :-) – Erez

0

Pas exactement comme je le ferais (j'utiliserais 2 sources de données d'objet); mais si vous ne voulez vraiment utiliser que 1, procédez comme suit:

Créez une instruction SQL contenant 2 instructions select; et chargez-le dans un DataSet C#.
Liez votre premier ddl à DataSet.Tables [0].
Liez votre deuxième ddl à DataSet.Tables [1].

Et voilà. 1 connexion.

EDIT: Si vous voulez vraiment utiliser un DataReader ...

Vous auriez probablement besoin 2 SELECT, avec un champ supplémentaire pour distinguer ce qui vous ddl vous insérez dans. Alors; quelque chose comme ceci:

SELECT 'Tableau 1' AS TableName, Nom, Valeur DE dbo.Table1

UNION

SELECT 'Tableau2' AS TableName, Nom, Valeur DE dbo.Table2

puis dans la méthode que vous utilisez pour charger les éléments dans vos DDL, vérifiez le nom de la table pour voir lequel ajouter

1

Vous pouvez exécuter les deux requêtes dans le SP:

your_sp

select * from table1; 
    select * from table2; 

ensuite sur le côté C#, vous ouvrez le lecteur de données et vous pouvez utiliser la méthode reader.NextResult() pour passer au résultat suivant dans le jeu de résultats.

while (reader.Read())            
{                 
    // process results from first query        
}                 

reader.NextResult();            
while (reader.Read())            
{                 
    // process results from second query        
}                 
+0

J'aime mieux votre méthode que la mienne. –