Csharp/CSharp Tutorial/ADO.Net/Column Type Name
Версия от 15:31, 26 мая 2010; (обсуждение)
Get table schema from SqlDataReader
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();
}
}
}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
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();
}
}
}