【发布时间】:2025-12-28 20:55:15
【问题描述】:
我正在尝试使用 c# 在 Microsoft Access 数据库中创建一对一的关系。到目前为止,我有以下代码(据我了解)应该创建一对一的关系:
OleDbConnection dbCon = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = d:\\Test.mdb; Jet OLEDB:System Database=c:\\secure.mdw; User Id=321; Password=123;");
dbCon.Open();
String szTable1 = "CREATE TABLE Table1 (Field1 int UNIQUE NOT NULL PRIMARY KEY)";
OleDbCommand table1Cmd = new OleDbCommand(szTable1, dbCon);
table1Cmd.ExecuteNonQuery();
String szTable2 = "CREATE TABLE Tablea (Fielda int UNIQUE NOT NULL PRIMARY KEY)";
OleDbCommand table2Cmd = new OleDbCommand(szTable2, dbCon);
table2Cmd.ExecuteNonQuery();
String szRelationship1 = "ALTER TABLE Table1 ADD CONSTRAINT TableLink FOREIGN KEY (Field1) REFERENCES Tablea(Fielda) ON DELETE CASCADE";
OleDbCommand relationship1Cmd = new OleDbCommand(szRelationship1, dbCon);
relationship1Cmd.ExecuteNonQuery();
dbCon.Close();
这将创建 2 个表并在它们之间创建关系,但是当我查看 Access 中的 MSysRelationship 表时,它给了我一个 4096(这将是一对多)的 grbit,而不是 4097,这是一个一对一:
(来源:richardn.co.uk)
当我在关系窗口中查看关系时,它在关系图上显示它是一对多关系,但在编辑关系窗口中显示它是一对一关系:
(来源:richardn.co.uk)
我真的卡在这里,因为在 Access 中,如果我编辑关系并更改其中一项设置并单击确定,它会立即在窗口中变为一对一关系,并且 grbit 更改为 4097。什么是我在代码中遗漏了将关系设置为最初 grbit 为 4097 的一对一关系?
【问题讨论】:
-
+1 以获得良好的研究和对问题的清晰描述。
标签: c# ms-access relationship one-to-one