2011-08-12 49 views
1

我有一个MS Access 2002-2003数据库。我想知道是否有以编程方式检索列描述的方法。我已经可以获取列类型,名称等使用检索MSAccess数据库列说明

OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.KeyInfo); 

DataTable schemaTable = reader.GetSchemaTable(); 

foreach (DataRow myField in schemaTable.Rows) 
{ 
    foreach (DataColumn myProperty in schemaTable.Columns) 
    { 
     // etc... 
    } 
} 

,但我没有访问“说明”信息(你可以使用“设计视图”中MSACCESS时,要查看)。

有没有简单的方法来获取“描述”信息?

+0

的可能的复制(HTTP://计算器[我怎么能检索在C#中访问数据库列说明?]。 com/questions/4936901/how-can-i-retrieve-column-descriptions-from-access-database-in-c) – alk

回答

2

这里是我落得这样做:

string columnName = "myColumnName" 

ADOX.Catalog cat = new ADOX.CatalogClass(); 
ADODB.Connection conn = new ADODB.Connection(); 
conn.Open(ConnectionString, null, null, 0); 
cat.ActiveConnection = conn; 
ADOX.Table mhs = cat.Tables["myTableName"]; 

columnDescription = mhs.Columns[columnName].Properties["Description"].Value.ToString(); 

conn.Close(); 

这工作很好,除了我找到正确的程序集添加为参考有些麻烦。我不得不添加一个对adodb.dll(它附带.Net)的引用。我还必须添加一个参考Microsoft ADO分机。 2.8 for DDL and Security这是一个ActiveX组件(在Visual Studio中添加引用时在COM选项卡中找到)。

代码片段是伟大的,但如果你省略参考信息,有些人会被卡住;)

1

使用一个ADOX目录,你可以实地考察一下属性说明,在VBA:

catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=" & CurrentProject.FullName 

Set tbl = catDB.Tables("New") 

Set fld = tbl.Columns("Test") 
Debug.Print fld.Properties("Description") 

副本从How can I retrieve column descriptions from an access database in C#?

+0

我现在意识到我的问题是重复的,尽管我会将自己的答案添加到一些额外的信息。谢谢! –