Comment obtenir le SqlType d'une colonne dans un DataTable?
J'ai une Table de données obtenues à partir d'une Base de données SQL, comme ceci:
using (SqlCommand cmd = new SqlCommand(query, _sqlserverDB))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
result = (dataSet != null && dataSet.Tables != null && dataSet.Tables.Count > 0) ? dataSet.Tables[0] : null;
}
}
Lorsque j'essaie d'obtenir le Type de données de chaque colonne par dataColumn.Type de données , j'ai le C# types (Int32, Int64, Chaîne de caractères, etc).
QUESTION: Comment puis-je accéder à la maternelle types de données SQL (varchar, nvarchar, bigint...) au lieu du C#?
J'ai essayé dataColumn.Type de données.UnderlyingSystemType et le résultat est le même.
source d'informationauteur DarthRoman
Vous devez vous connecter pour publier un commentaire.
vous ne pouvez pas parce que
System.Data.DataTable
(ou DataColumn, ou le jeu de données, ou DataRow...) est un générique .NET conteneur de données qui fonctionne de la même manière, quel que soit sur le moteur de base de données que vous avez chargé vos données.cela signifie qu'à condition que vous utilisé .NET Connecteur pour SQL Server, MySql, Access, PostgreeSQL ou quoi que ce soit d'autre, la DataTable et DataColumn classes sont toujours les mêmes et d'être ADO.NET les objets sont génériques à travailler avec n'importe quel moteur de base de données, de sorte que les colonnes sont tapés avec le .NET des types comme vous l'avez trouvé.
Bien sûr, il est possible de prendre SqlDbType d'une colonne, la réponse est DONC: lien.
Comme David le dit ... vous êtes dans .NET, de sorte que les types seront .Types de réseau. C'est une liste de mappages de type à partir de SQL Server .Net qui vous montre comment .Type de NET vous allez vous retrouver avec, pour un type de colonne Sql .. espérons que cela aide ..
http://msdn.microsoft.com/en-us/library/ms131092.aspx
Une autre approche est de laisser SQL faire le travail pour vous:
Si vous utilisez DataReader -
SqlDataReader reader = cmd.ExecuteReader();
reader.GetDataTypeName(int ordinal)
devrait fonctionner si vous souhaitez que le type de données SQL d'une colonne
Bâtiment sur Madhukar Krishna réponse, si vous avez un
SQLDataReader
ou unMySQLDataReader
objet que vous pouvez obtenir le type SQL de métadonnées pour une colonne donnée (dans le code, nous obtenons les métadonnées de la colonne d'indice 1) en utilisant le code suivant (exempleMySQLDataReader
objet):La ligne:
est utilisé pour obtenir la
System.Data.SqlDbType
à partir d'unString
et en ignorant la casse des lettres, par exemple, sidr.GetDataTypeName(1)
retourne"VARCHAR"
puis leSystem.Data.SqlDbType
valeur d'enum estSystem.Data.SqlDbType.VarChar
.Ensuite, vous pouvez obtenir la taille du type de données (par exemple de type VARCHAR(15)) par l'inspection du SQL colonnes de métadonnées avec le code suivant (source MSDN):
La propriété
ColumnSize
donne la taille de l'information.