sqlDataAdapter的FillSchema用法

摘自于网络:http://blog.csdn.net/bupt_zoucq/article/details/6653385

FillSchema是用来向DataTable中填入详细的元数据信息的,例如(column names, primary key, constraints等),但不填入数据。
Fill主要是用来填入数据的,它在缺省情况下只填入少量必要的元数据信息,例如(column names, data types)。
所以,一般先用FillSchema来填入详细的元数据信息,再用Fill来填充数据,例如:

sqlDataAdapter1.FillSchema(dataSet1,SchemaType.Source,"authors");
sqlDataAdapter1.Fill(dataSet1,"authors");

DataColumn[] colArr;
colArr = dataSet1.Tables["authors"].PrimaryKey;
MessageBox.Show("Column Count: " + colArr.Length.ToString());
for(int i = 0; i < colArr.Length; i++)
{
MessageBox.Show(colArr[i].ColumnName + "   " + colArr[i].DataType.ToString());
}

在上例中,如果不调用FillSchema, 缺省情况下不会填如PrimaryKey信息。

             SqlDataAdapter adapter = new SqlDataAdapter("SELECT *  FROM [FinanceStock].[dbo].[Table_StockBasicInfo]", initConnection());
            adapter.TableMappings.Add("Table", "Table_StockBasicInfo");
            DataSet dataSet = new DataSet("noConstraints");
            dataSet.Tables.Add(new DataTable("Table_StockBasicInfo"));
            dataSet.EnforceConstraints = false;
            dataSet.Tables[0].BeginLoadData();
            adapter.MissingSchemaAction = MissingSchemaAction.Error;
            adapter.FillSchema(dataSet, SchemaType.Source, "Table_StockBasicInfo");
            adapter.Fill(dataSet);
            dataSet.Tables[0].EndLoadData();

原文地址:https://www.cnblogs.com/qiushuixizhao/p/3236609.html