【问题标题】:Get required columns from Access database从 Access 数据库中获取所需的列
【发布时间】:2019-01-19 16:44:25
【问题描述】:

目前,我在 GetOleDbSchemaTable 的帮助下获取表和列。我也想知道给定的列是否是必需的。

string[] rest = new string[] { null, null, tableName, null };
DataTable rows = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, rest);
foreach (DataRow rr in rows.Rows)
{
    string tbrow = rr["COLUMN_NAME"].ToString();
    int colnum_type = Int32.Parse(rr["DATA_TYPE"].ToString());
    string datatype = get_dataType(colnum_type)
}

这样我得到了给定列的列和数据类型。现在我想获取列表或获取表格中所需字段的方法。

【问题讨论】:

    标签: c# ms-access vb.net-to-c#


    【解决方案1】:

    使用 GetSchema 方法并请求 COLUMNS 集合将返回一个 DataTable,您可以在其中找到 IS_NULLABLE 属性

    using(OleDbConnection con = new OleDbConnection(......)
    { 
        con.Open();
        string[] rest = new string[] { null, null, tableName, null };
        var schema = con.GetSchema("COLUMNS", rest);
        foreach (DataRow row in schema.Rows)
            Console.WriteLine($"Column={row["COLUMN_NAME"]}, NULLABLE={row["IS_NULLABLE"]}");
    
    }
    

    顺便说一下,刚刚检查了你的方法,GetOleDbSchemaTable 返回相同的数据表,所以它只是存储在 IS_NULLABLE 列中的值

    【讨论】:

    • 嘿史蒂夫,我可以在 GetOleDbSchemaTable 中使用 IS_NULLABLE 属性
    • 是的,与您现在使用 COLUMN_NAME 或 DATA_TYPE 的方式相同。它只是返回的 DataTable 对象上的另一列
    猜你喜欢
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多