获取sql server Express数据库结构
在.net1.0中可以通过oledb的方式连接数据库,获取数据库的各种属性,以前曾经使用过,没什么问题的了(http://dlwang2002.iyunv.com/archive/2005/04/11/207996.html)
但是这种方式并不能处理对sql server express的操作,而只能使用SqlConnection。
http://www.microsoft.com/china/MSDN/library/data/dataAccess/DAadonet2schemas.mspx。
按照上边的介绍,写了几个测试如下
SqlConnection connection = null;
connection = new SqlConnection(connectString);
connection.Open();
DataTable tables=connection.GetSchema("Tables");这段代码可以获取数据库的所有数据表。
string[] col = new string;/**////for colums{"Table_CATALOG","TABLE_SCHEMA","TABLE_NAME","COLUMN_NAME","ORDINAL_POSITION","COLUMN_DEFAULT"}
for (int i = 0; i < 4; i++)
col = null;
ol = tableName;
DataView columns = connection.GetSchema("Columns",col).DefaultView;上边的代码可以获取指定表的所有列。注意GetSchema第二个参数,是一个限制条件,第三列指定的是数据表的名称。
//connection.GetSchema(DbMetaDataCollectionNames.MetaDataCollections).WriteXml("Meta.xml");
DataTable keyFields = connection.GetSchema("IndexColumns", new string[] { null, null, tableName });
int index=0;
for (int i = 0; i < keyFields.Rows.Count; i++)
{
if (keyFields.Rows.ToString().IndexOf("PK_") > -1)
index = i;
}
return Global.Clean(keyFields.Rows.ToString());这一段是用来获取主键的。好像里面没有PrimaryKeys这一个关键字,只能这样凑合着用了。
DataTable keyFields = connection.GetSchema("ForeignKeys",new string[] {null,null,tableName });
这一段是用来获取外键的,不过,这一段来凑合着用都不行
这是输出的结果
D:\xx\BIN\DEBUG\ASPNETDB.MDF
dbo
FK__aspnet_Us__Appli__0425A276
D:\xx\BIN\DEBUG\ASPNETDB.MDF
dbo
aspnet_Users
FOREIGN KEY
NO
NO
本来指着从这里获取"FK_TABLE_NAME","FK_COLUMN_NAME","PK_TABLE_NAME","PK_COLUMN_NAME"的,但是,好像不好找这些参数了。应该如何获取呢?
页:
[1]