2010-02-15 7 views
1

J'ai une requête de procédure stockée que je souhaite renvoyer les détails des colonnes dans une table spécifique. Quand je lance le sp dans Sql server managements studio, je reçois des résultats. Le problème est lorsque j'essaie d'exécuter la requête à partir du code C#. Il n'y a aucune exception levée et les persmissions pertinentes sont accordées pour exécuter la procédure dans la base de données mais aucun résultat n'est retourné au code. J'utilise le bloc d'application d'entreprise version 3.1.La requête pour les noms de colonne de table ne renvoie aucun résultat au code appelant

C'est ma requête

SELECT SysObjects.[Name] as TableName, 
      SysColumns.[Name] as ColumnName, 
      SysTypes.[Name] As DataType, 
      SysColumns.[Length] As Length 
    FROM SysObjects INNER JOIN SysColumns ON SysObjects.[Id] = SysColumns.[Id] 
    INNER JOIN SysTypes ON SysTypes.[xtype] = SysColumns.[xtype] 
    WHERE SysObjects.[type] = 'U' 
     AND SysObjects.[Name] = 'MyTableName' 
    ORDER BY SysObjects.[Name] 

C# Code téléphonique

using (DbCommand dbCommand = db.GetStoredProcCommand("StoredProcedureName")) 
{ 
    DataSet data = new DataSet(); 

    db.LoadDataSet(dbCommand, data, "MyTableName"); 
    if (data.Tables.Count > 0 && data.Tables[0].Rows.Count > 0) 
    { 
     // Do stuff with the returned data 
    } 
} 
+2

Pouvez-vous fournir le code C# où vous appelez votre requête SQL? –

+0

votre travail SQL, le problème est le programme C# –

+0

Si vous utilisez le bloc d'application d'accès aux données bibliothèque d'entreprise (comme il semble, peut-être la version 3.1?), Vous devez mettre à jour la question pour l'inclure. –

Répondre

0

Je ne suis pas sûr de la question C#, mais vous devriez envisager de changer votre requête d'utiliser la couche abstraction de données fournie par Microsoft. L'utilisation des références SYSOBJECTS n'est pas garantie être la même entre les versions SQL.

Au lieu de cela j'utiliser ceci:

-- 
-- for a specific tables columns 
-- 
select * 
from INFORMATION_SCHEMA.COLUMNS 

-- 
-- For all the user tables in the current database.. 
-- 
select * 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME='MyTableName' 
Questions connexes