如何在 C# 中使用 JET 和 OLE 检查列是否具有唯一/无重复约束

本文关键字:唯一 是否 约束 检查 OLE JET | 更新日期: 2023-09-27 18:33:46

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

正在编写一个界面,允许用户编辑包含关键字的表的值(涉及多个表,我正在尝试一般地执行此操作(。

这些表包含几列。 有些列具有"无重复项"约束,有些则没有。 我需要能够分辨哪些列具有"无重复"约束,以便在将条目写入表之前检查整个条目,以避免违反"无重复"约束。 (我知道我在写作时可以抓住错误,但我真的不想去那里。

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

谢谢

-志

如何在 C# 中使用 JET 和 OLE 检查列是否具有唯一/无重复约束

您可以在"唯一"列中检查索引架构是否为 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();