我的访问文件中有两个表。我想创建它们之间的关系。下图是我在Access中手动创建的关系。在Access中创建关系
不过,我想创建VB.net的关系,这里是我的代码:
conn.Open()
daBooks = New OleDb.OleDbDataAdapter("SELECT * FROM Books", conn)
daAuthor = New OleDb.OleDbDataAdapter("SELECT * FROM authors", conn)
daBooks.Fill(ds, "Books")
daAuthor.Fill(ds, "authors")
conn.Close()
'Set the relation
Dim parentColumn As DataColumn
parentColumn = ds.Tables("authors").Columns("AuthorID")
Dim childColumn As DataColumn = New DataColumn
Try
childColumn = ds.Tables("Books").Columns("AuthorID")
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
Dim a As String
a = ds.Tables("authors").Rows(0).Item("AuthorID")
Dim b As String
b = ds.Tables("Books").Rows(0).Item("AuthorID")
Dim relation As DataRelation = New _
System.Data.DataRelation("Books_Authors", parentColumn, childColumn)
ds.Relations.Add(relation)
RelationName.Text = relation.RelationName
'End of setting relation
Dim cb1 As New OleDb.OleDbCommandBuilder(daBooks)
Dim cb2 As New OleDb.OleDbCommandBuilder(daAuthor)
Try
daBooks.Update(ds, "books")
Catch ex As Exception
MsgBox(ex.Message)
End Try
daAuthor.Update(ds, "authors")
但是之后我跑的代码,它不能更改数据库。任何人都可以帮助我,这样我就可以在VB.NET中为两个表创建一个新的关系。
一般来说,我认为问题是,System.Data.DataRelation
和ds.Relations.Add(relation)
刚刚创建的dataset
的关系,但它并没有被通过dataadapter
或别的东西更新到database
。我是这样说的,还是因为其他原因而纠正的。如果我是正确的,那么如何更新dataset
到database
?
你想互操作(http://wiki.lessthandot.com/index.php/Access,_Script_and_Relationships)或ADOX(http://allenbrowne.com/func-adox.html#CreateKeyAdox)? – Fionnuala