【问题标题】:Retrieve MSAccess database column description检索 MSAccess 数据库列说明
【发布时间】:2011-08-12 14:46:34
【问题描述】:

我有一个 MS Access 2002-2003 数据库。我想知道是否有办法以编程方式检索列描述。我已经可以使用

获取列类型、名称等
OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.KeyInfo);

DataTable schemaTable = reader.GetSchemaTable();

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

但我无权访问“描述”信息(您可以在 MSAccess 中使用“设计视图”时查看)。

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

【问题讨论】:

标签: c# database-schema ms-access-2003


【解决方案1】:

这是我最终做的:

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 Ext 的引用。 2.8 用于 DDL 和安全性,它是一个 ActiveX 组件(在 Visual Studio 中添加引用时在 COM 选项卡中找到)。

代码 sn-ps 很棒,但是如果您省略参考信息,有些人会卡住;)

【讨论】:

    【解决方案2】:

    使用 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#?复制

    【讨论】:

    • 我现在意识到我的问题是重复的,尽管我会添加我自己的答案和一些额外的信息。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多