当您调用DbConnection.GetSchema时,您需要为它提供您感兴趣的集合的字符串名称。我在任何地方都找不到收藏清单。集合列表是不可变的,还是随数据库类型(orcle、sql server等)而变化?
我对获取一些数据库类型(如sql server和sqlite )中所有集合名称的列表很感兴趣。
发布于 2009-01-17 18:39:34
我使用OleDbConnection,即使我连接到Oracle、Sql Server...然后我可以使用:
myOleDbConnection.GetOleDbSchemaTable(OleDbSchemGuid.Tables);OleDbSchemaGuid的可能值:
(请注意,根据数据库的不同,其中一些可能会抛出NotSupported异常:
OleDbSchemaGuid.Assertions;
OleDbSchemaGuid.Catalogs;
OleDbSchemaGuid.Character_Sets;
OleDbSchemaGuid.Check_Constraints;
OleDbSchemaGuid.Check_Constraints_By_Table;
OleDbSchemaGuid.Collations;
OleDbSchemaGuid.Column_Domain_Usage;
OleDbSchemaGuid.Column_Privileges;
OleDbSchemaGuid.Columns;
OleDbSchemaGuid.Constraint_Column_Usage;
OleDbSchemaGuid.Constraint_Table_Usage;
OleDbSchemaGuid.DbInfoKeywords;
OleDbSchemaGuid.DbInfoLiterals;
OleDbSchemaGuid.Foreign_Keys;
OleDbSchemaGuid.Indexes;
OleDbSchemaGuid.Key_Column_Usage;
OleDbSchemaGuid.Primary_Keys;
OleDbSchemaGuid.Procedure_Columns;
OleDbSchemaGuid.Procedure_Parameters;
OleDbSchemaGuid.Procedures;
OleDbSchemaGuid.Provider_Types;
OleDbSchemaGuid.Referential_Constraints;
OleDbSchemaGuid.SchemaGuids;
OleDbSchemaGuid.Schemata;
OleDbSchemaGuid.Sql_Languages;
OleDbSchemaGuid.Statistics;
OleDbSchemaGuid.Table_Constraints;
OleDbSchemaGuid.Table_Privileges;
OleDbSchemaGuid.Table_Statistics;
OleDbSchemaGuid.Tables;
OleDbSchemaGuid.Tables_Info;
OleDbSchemaGuid.Translations;
OleDbSchemaGuid.Trustee;
OleDbSchemaGuid.Usage_Privileges;
OleDbSchemaGuid.View_Column_Usage;
OleDbSchemaGuid.View_Table_Usage;
OleDbSchemaGuid.Views;发布于 2009-01-17 19:32:06
该列表因提供商而异。出于这个原因,已经定义了一些Common Schema Collections,它们始终可用,而不管提供程序是什么。其中之一是MetaDataCollections集合,它将返回一个DataTable,其中包含当前提供程序支持的架构集合的列表、它们各自支持的限制数量以及它们使用的标识符部分的数量。
发布于 2009-01-17 19:03:50
对于System.Data.SQLite,我终于找到了它所支持的:
http://sqlite.phxsoftware.com/readme.htm
DbConnection.GetSchema(...)支持包括ReservedWords、MetaDataCollections、DataSourceInformation、DataTypes、列、表、视图、ViewColumns、目录、索引、IndexColumns、ForeignKeys和触发器。
我认为sql server应该是一样的,但我仍然没有确定的列表。
https://stackoverflow.com/questions/453683
复制相似问题