代码之家  ›  专栏  ›  技术社区  ›  Admin

conn.GetSchema查找表的主键-MsAccess

  •  0
  • Admin  · 技术社区  · 8 年前

    我有一个MsAccess数据库( .mdb )位于D驱动组件中( ). 记录 具有主键和多个字段。我想获取列、ColumnType和PrimaryKey。

    我使用以下方法获取字段及其类型:

    Dim TableNm_ As String = "Records"      
    Dim restrictions2() As String = {Nothing, Nothing, TableNm_, Nothing} 
    Dim DataTable2 As System.Data.DataTable = conn.GetSchema("Columns", restrictions2)
    

    我已经通过了几个SO帖子和其他类似的帖子 GetSchema and PrimaryKey column 不要

    记录 仅使用conn.GetSchema?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Er Mayank    8 年前

    您可以使用 Connection.GetOleDbSchemaTable

    DataTable2 = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, New String() {Nothing, Nothing, TableNm_}) 
    For Each TableRow As DataRow In DataTable2.Rows
        If TableRow.Item("PK_NAME").ToString.ToLower = "PrimaryKey".ToLower Then
            Dim  PrimaryKey = TableRow.Item("COLUMN_NAME")
            Dim Ordinal = CShort(TableRow.Item("ORDINAL"))
        End If
    Next
    
        2
  •  0
  •   Mino    7 年前

    您可以使用 DatabaseSchema 从…起 Kros.Utils.MsAccess

    using(var cn = new OleDbConnection("MS Access Connection String"))
    {  
      DatabaseSchema schema = DatabaseSchemaLoader.Default.LoadSchema(cn);
      Assert.IsFalse(schema.Tables["Person"].Columns["Id"].AllowNull);
    }