自动获取表结构及Relation

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

string myConnString = "Provider=SQLOLEDB;Data Source=server;Initial Catalog=Duwamish7;Integrated Security=SSPI;Connect Timeout=30";

OleDbConnectionconn = new OleDbConnection(myConnString);

DataSetds = new DataSet();

using (conn)

{

conn.Open();

//取表

DataTable dataTalbeschema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,

new Object[]{ null, null, null,"TABLE" } );

//取表结构

foreach (DataRow tableRow in dataTalbeschema.Rows)

{

String tableName = tableRow["Table_Name"].ToString();

string sql = "select * from " + tableName ;

OleDbDataAdapter oda= new OleDbDataAdapter(sql,conn);

oda.MissingSchemaAction = MissingSchemaAction.AddWithKey;

oda.FillSchema(ds,SchemaType.Mapped,tableName);

}

//添加Relation

DataTable dtfk = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Foreign_Keys,null );

foreach (DataRow fkRow in dtfk.Rows)

{

String fkName = fkRow["Fk_Name"].ToString();

DataColumn parentColumn = ds.Tables[fkRow["Pk_Table_Name"].ToString()].Columns[fkRow["Pk_Column_Name"].ToString()];

DataColumn childColumn = ds.Tables[fkRow["Fk_Table_Name"].ToString()].Columns[fkRow["Fk_Column_Name"].ToString()];

ds.Relations.Add(fkName,parentColumn,childColumn);

}

conn.Close();

}

详细了解请参看MSDN "GetOleDbSchemaTable"帮助

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有