对于通过 JET OLEDB 连接使用 Access 数据库以 C# 编写的应用程序:
我正在编写一个界面,允许用户编辑包含关键字的表的值(涉及几个表,我正在尝试通用)。
这些表包含几列。有些列有“无重复”约束,有些则没有。我需要能够判断哪些列具有“无重复”约束,以便在将条目写入表之前将它们作为一个整体检查,以避免违反“无重复”约束。(我知道我可以在写作时发现错误,但我真的不想去那里。)
如何确定 Access 数据库中表中的哪些列具有唯一(无重复)约束?
谢谢
-志
您可以在唯一列中检查索引架构是否为 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();