Csharp/CSharp Tutorial/ADO.Net/Column Type Name

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Get table schema from SqlDataReader

<source lang="csharp">using System; using System.Data; using System.Data.SqlClient; class MainClass {

  static void Main(string[] args)
  {
     string connString = "server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI;";
     string sql = @"select * from employee ";
     SqlConnection conn = new SqlConnection(connString);
     try
     {
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlDataReader rdr = cmd.ExecuteReader();
        DataTable schema = rdr.GetSchemaTable();
        foreach (DataRow row in schema.Rows) 
        {
           foreach (DataColumn col in schema.Columns)
              Console.WriteLine(col.ColumnName + " = " + row[col]);
        }
        rdr.Close();
     }
     catch(Exception e)
     {
        Console.WriteLine("Error Occurred: " + e);
     }
     finally
     {
        conn.Close();
     }
  }

}</source>

ColumnName = ID
ColumnOrdinal = 0
ColumnSize = 4
NumericPrecision = 10
NumericScale = 255
IsUnique = False
IsKey =
BaseServerName =
BaseCatalogName =
BaseColumnName = ID
BaseSchemaName =
BaseTableName =
DataType = System.Int32
AllowDBNull = True
ProviderType = 8
IsAliased =
IsExpression =
IsIdentity = False
IsAutoIncrement = False
IsRowVersion = False
IsHidden =
IsLong = False
IsReadOnly = False
ProviderSpecificDataType = System.Data.SqlTypes.SqlInt32
DataTypeName = int
XmlSchemaCollectionDatabase =
XmlSchemaCollectionOwningSchema =
XmlSchemaCollectionName =
UdtAssemblyQualifiedName =
NonVersionedProviderType = 8
ColumnName = FirstName
ColumnOrdinal = 1
ColumnSize = 10
NumericPrecision = 255
NumericScale = 255
IsUnique = False
IsKey =
BaseServerName =
BaseCatalogName =
BaseColumnName = FirstName
BaseSchemaName =
BaseTableName =
DataType = System.String
AllowDBNull = True
ProviderType = 10
IsAliased =
IsExpression =
IsIdentity = False
IsAutoIncrement = False
IsRowVersion = False
IsHidden =
IsLong = False
IsReadOnly = False
ProviderSpecificDataType = System.Data.SqlTypes.SqlString
DataTypeName = nchar
XmlSchemaCollectionDatabase =
XmlSchemaCollectionOwningSchema =
XmlSchemaCollectionName =
UdtAssemblyQualifiedName =
NonVersionedProviderType = 10
ColumnName = LastName
ColumnOrdinal = 2
ColumnSize = 10
NumericPrecision = 255
NumericScale = 255
IsUnique = False
IsKey =
BaseServerName =
BaseCatalogName =
BaseColumnName = LastName
BaseSchemaName =
BaseTableName =
DataType = System.String
AllowDBNull = True
ProviderType = 10
IsAliased =
IsExpression =
IsIdentity = False
IsAutoIncrement = False
IsRowVersion = False
IsHidden =
IsLong = False
IsReadOnly = False
ProviderSpecificDataType = System.Data.SqlTypes.SqlString
DataTypeName = nchar
XmlSchemaCollectionDatabase =
XmlSchemaCollectionOwningSchema =
XmlSchemaCollectionName =
UdtAssemblyQualifiedName =
NonVersionedProviderType = 10
ColumnName = Salary
ColumnOrdinal = 3
ColumnSize = 8
NumericPrecision = 15
NumericScale = 255
IsUnique = False
IsKey =
BaseServerName =
BaseCatalogName =
BaseColumnName = Salary
BaseSchemaName =
BaseTableName =
DataType = System.Double
AllowDBNull = True
ProviderType = 6
IsAliased =
IsExpression =
IsIdentity = False
IsAutoIncrement = False
IsRowVersion = False
IsHidden =
IsLong = False
IsReadOnly = False
ProviderSpecificDataType = System.Data.SqlTypes.SqlDouble
DataTypeName = float
XmlSchemaCollectionDatabase =
XmlSchemaCollectionOwningSchema =
XmlSchemaCollectionName =
UdtAssemblyQualifiedName =
NonVersionedProviderType = 6
ColumnName = Birthday
ColumnOrdinal = 4
ColumnSize = 8
NumericPrecision = 23
NumericScale = 3
IsUnique = False
IsKey =
BaseServerName =
BaseCatalogName =
BaseColumnName = Birthday
BaseSchemaName =
BaseTableName =
DataType = System.DateTime
AllowDBNull = True
ProviderType = 4
IsAliased =
IsExpression =
IsIdentity = False
IsAutoIncrement = False
IsRowVersion = False
IsHidden =
IsLong = False
IsReadOnly = False
ProviderSpecificDataType = System.Data.SqlTypes.SqlDateTime
DataTypeName = datetime
XmlSchemaCollectionDatabase =
XmlSchemaCollectionOwningSchema =
XmlSchemaCollectionName =
UdtAssemblyQualifiedName =
NonVersionedProviderType = 4

ResultSet Metadata: table column name and type

<source lang="csharp">using System; using System.Data; using System.Data.SqlClient; class MainClass {

  static void Main(string[] args)
  {
     string connString = @"server = .\sqlexpress;integrated security = true;database = northwind";
     string sql = @"select contactname,contacttitle from customers where contactname like "M%"";
     SqlConnection conn = new SqlConnection(connString); 
     try
     {
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);
        SqlDataReader rdr = cmd.ExecuteReader();
        // get column names
        Console.WriteLine("Column Name:\t{0} {1}",rdr.GetName(0).PadRight(25),rdr.GetName(1));
        // get column data types
        Console.WriteLine("Data Type:\t{0} {1}",rdr.GetDataTypeName(0).PadRight(25), rdr.GetDataTypeName(1));
        while (rdr.Read())
        {
           Console.WriteLine("\t\t{0} {1}",rdr.GetString(0).ToString().PadRight(25),rdr.GetString(1));
        }
        Console.WriteLine("Number of columns in a row: {0}",rdr.FieldCount);
        Console.WriteLine(""{0}" is at index {1} " +"and its type is: {2}",rdr.GetName(0),rdr.GetOrdinal("contactname"),rdr.GetFieldType(0));
        Console.WriteLine(""{0}" is at index {1} " +"and its type is: {2}",rdr.GetName(1),rdr.GetOrdinal("contacttitle"),rdr.GetFieldType(1));
        rdr.Close();
     }
     catch(Exception e)
     {
        Console.WriteLine("Error Occurred: " + e);
     }
     finally
     {
        conn.Close();
     }
  }

}</source>