Comment puis-je obtenir le SqlDbType d'une colonne dans une table à l'aide de ADO.NET?
Je suis en train de déterminer au moment de l'exécution de ce que le SqlDbType d'une table sql server colonne est.
est-il une classe qui peut le faire dans le Système.Les données.SqlClient ou dois-je faire la cartographie de moi-même? Je peux obtenir une représentation sous forme de chaîne de retour de
SELECT DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = '{0}' AND TABLE_SCHEMA = '{1}'
AND TABLE_NAME = '{2}' AND COLUMN_NAME = '{3}'
EDIT: je ne peux pas utiliser SMO comme je n'ai pas de contrôle sur l'exécution de la machine donc je ne peux pas garantir qu'il sera installé. (Désolé de ne pas l'indiquer clairement rp).
EDIT: En réponse à Joel, je suis en train de faire une fonction que je peux appeler qui m'a fait un SqlDBType lorsqu'il est passé d'une occurrence de SqlConnection, un nom de table, et un nom de colonne.
Vous devez vous connecter pour publier un commentaire.
Dans SQL Server, vous pouvez utiliser le FMTONLY option. Il vous permet d'exécuter une requête sans obtenir de données, il suffit de retourner les colonnes.
Si vous êtes éventuellement aller pour lire les données, vous pouvez le faire:
Pour SQL Server, utilisez le SMO (SQL Server Management Objects).
http://www.yukonxml.com/articles/smo/
Par exemple, vous pouvez utiliser ce code pour parcourir plus de toutes les colonnes d'une table.
Voici toutes les propriétés de la colonne s'offrent à vous:
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.column_members.aspx
Vieille question, mais si tout ce que vous essayez de faire est d'obtenir à partir de la chaîne DATA_TYPE à la SqlDbType enum, la requête présentée dans la question d'origine, combinée avec une seule ligne de code fera l'affaire:
Vous pouvez utiliser enum Système.Les données.CommandBehavior comme paramètre de la méthode SqlCommand.ExecuteReader(Système D'.Les données.CommandBehavior.KeyInfo):
Cet exemple ressemble à l'exemple avec l'aide de sql: FMTONLY SET SUR; FMTONLY SET OFF. Mais vous n'avez pas à utiliser FMTONLY SET. Et dans ce cas, vous n'avez pas
recevoir des données à partir de la table. Vous recevez uniquement les métadonnées.