数据读取器---获取表的模式信息

在关系数据库中,“模式”有多种含义。这里使用这个术语表示数据结构的设计,尤其是数据库中表的设计。表由行和列组成,每个列可以有不同的数据类型。列及其属性(数据类型、长度等)构成了表的模式。

为了便于检索模式信息,可以调用数据读取器的GetSchemaTable方法。方法返回System.Data.DataTable对象,它是对所查询的描述(即模式),才DataRow和DataColumn对象的形式包含行和列的集合。这些行和列由DataTable类的Rows和Columns属性以集合对象的形式返回。

实例演示如何调用GetSchemaTable方法:

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace SchemaTable
{
    class Program
    {
        static void Main(string[] args)
        {
            string connString = @"
            server = .;
            integrated security =true;
            database =northwind";
            string sql = @"
            select * from employees";
            SqlConnection conn = new SqlConnection(connString);
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataReader rdr = cmd.ExecuteReader();

                //store Employees schema in a data table
                DataTable schema = rdr.GetSchemaTable();

                //display info from each RowNotInTableException in the data table.
                //each row describes a column in the database table.
                foreach (DataRow row in schema.Rows)
                {
                    foreach (DataColumn col in schema.Columns)

                        Console.WriteLine(col.ColumnName + " = " + row[col]);
                    Console.WriteLine("---------------------");

                }
                rdr.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error Occurred: " + e);
            }
            finally
            {
                conn.Close();
            }
            Console.ReadKey();
        }
    }
}

示例说明:

调用GetSchemaTable方法,返回一个已填充数据的DataTable实例:
                DataTable schema = rdr.GetSchemaTable();

使用嵌套的foreach循环逐个遍历列的模式信息

foreach (DataRow row in schema.Rows)
                {
                    foreach (DataColumn col in schema.Columns)
                    Console.WriteLine(col.ColumnName + " = " + row[col]);
                    Console.WriteLine("---------------------");
                }

posted on 2012-07-19 09:30  流星落  阅读(217)  评论(0编辑  收藏  举报

导航