今天用到了IDataReader.GetSchemaTable,所以就做个记录:
1、IDataReader.GetSchemaTable :
功能:返回一个 DataTable,它描述 IDataReader 的列元数据。
使用IDataReader.GetSchemaTable的代码:
OracleConnection conn = new OracleConnection(@"Data Source=102his;
Persist Security Info=True;User ID=his;Password=his;Unicode=True");
conn.Open();
OracleCommand cmd = new OracleCommand("Select * From sbas_TreatyCompany", conn);
IDataReader reader = cmd.ExecuteReader();
DataTable dt = reader.GetSchemaTable();
conn.Close();
this.dgvShowData.DataSource = dt;
Persist Security Info=True;User ID=his;Password=his;Unicode=True");
conn.Open();
OracleCommand cmd = new OracleCommand("Select * From sbas_TreatyCompany", conn);
IDataReader reader = cmd.ExecuteReader();
DataTable dt = reader.GetSchemaTable();
conn.Close();
this.dgvShowData.DataSource = dt;
结果:
由此可以看出,IDataReader.GetSchemaTable返回的datatable是固定框架,每一列的列名都是固定的。而每一行则是数据库实体表的列。这个函数可以动态获取数据库表结构,比如表的主键,每一列的类型等信息。