1

对于通过 JET OLEDB 连接使用 Access 数据库以 C# 编写的应用程序:

我正在编写一个界面,允许用户编辑包含关键字的表的值(涉及几个表,我正在尝试通用)。

这些表包含几列。有些列有“无重复”约束,有些则没有。我需要能够判断哪些列具有“无重复”约束,以便在将条目写入表之前将它们作为一个整体检查,以避免违反“无重复”约束。(我知道我可以在写作时发现错误,但我真的不想去那里。)

如何确定 Access 数据库中表中的哪些列具有唯一(无重复)约束?

谢谢

-志

4

1 回答 1

2

您可以在唯一列中检查索引架构是否为 True。一些非常粗略的注释:

//http://msdn.microsoft.com/en-us/library/ms135981.aspx
    //Or Microsoft.Jet.OLEDB.4.0
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; "
   + "Data Source=" + pathToAccessDb);
cn.Open();

//Retrieve schema information
DataTable columns = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Indexes,
             new Object[] { null, null, null, null, "Table1" });

foreach (DataRow row in columns.Rows)
{
   Console.WriteLine(row["COLUMN_NAME"].ToString());
   Console.WriteLine(row["TABLE_NAME"].ToString());
   Console.WriteLine(row["UNIQUE"].ToString());
}

cn.Close();

//Pause
Console.ReadLine();
于 2012-05-10T09:02:07.013 回答