利用外键关系实现多表关联更新
2017-08-18 10:04
531 查看
窗体如下图:
上面DataGridView1数据为Northwind中的Orders表
下面DataGridView2数据为Northwind中的Order Details表
两表的外键为:Orders.OrdersID和Order Details.OrderID
目标:实现点击Button1按钮,关联更新两个表。
窗体代码:
对数据修改后如图:
点击保存按钮,进入数据库查看两张表更新后数据,效果如下:
由此实现了两张关系表的关联更新!
上面DataGridView1数据为Northwind中的Orders表
下面DataGridView2数据为Northwind中的Order Details表
两表的外键为:Orders.OrdersID和Order Details.OrderID
目标:实现点击Button1按钮,关联更新两个表。
窗体代码:
Public Class Form1 Dim bs_orders As New BindingSource Dim da_orders As New SqlClient.SqlDataAdapter Dim bs_ordersdetails As New BindingSource Dim da_ordersdetails As New SqlClient.SqlDataAdapter Dim ds As New DataSet Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load da_orders = New SqlClient.SqlDataAdapter("Select * from Orders", cn) da_orders.Fill(ds, "[orders]") bs_orders.DataSource = ds Dim scb As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da_orders) '用SqlCommandBuilder为SqlDataAdapter生成用于添加、删除、更新的Command da_orders.InsertCommand = scb.GetInsertCommand() da_orders.UpdateCommand = scb.GetUpdateCommand() da_orders.DeleteCommand = scb.GetDeleteCommand() '绑定DS中的[Orders]表 bs_orders.DataMember = "[orders]" da_ordersdetails = New SqlClient.SqlDataAdapter("select * from [Order Details]", cn) da_ordersdetails.Fill(ds, "[Order Details]") Dim scb2 As SqlClient.SqlCommandBuilder = New SqlClient.SqlCommandBuilder(da_ordersdetails) '用SqlCommandBuilder为SqlDataAdapter生成用于添加、删除、更新的Command da_ordersdetails.InsertCommand = scb2.GetInsertCommand() da_ordersdetails.UpdateCommand = scb2.GetUpdateCommand() da_ordersdetails.DeleteCommand = scb2.GetDeleteCommand() '创建关系,利用[Orders]中的[OrdersID]键与[Order Details]中的[OrderID]键相关联,创建外键关系 Dim relation As DataRelation = New DataRelation("FK_ORDERS_ORDER_DETAILS", ds.Tables("[Orders]").Columns("OrderID"), ds.Tables("[Order Details]").Columns("OrderID")) ds.Relations.Add(relation) bs_ordersdetails.DataSource = bs_orders '根据关系进行筛选关联 bs_ordersdetails.DataMember = "FK_ORDERS_ORDER_DETAILS" DataGridView1.DataSource = bs_orders DataGridView2.DataSource = bs_ordersdetails End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ds.HasChanges Then da_ordersdetails.Update(ds, "[Order Details]") da_orders.Update(ds, "[Orders]") ds.AcceptChanges() End If End Sub End Class
对数据修改后如图:
点击保存按钮,进入数据库查看两张表更新后数据,效果如下:
由此实现了两张关系表的关联更新!
相关文章推荐
- MySQL中利用外键实现级联删除、更新
- [原创]MYSQL中利用外键实现级联删除和更新
- mysql中利用外键实现级联删除,更新
- SQL中实现外键关键关系级联更新和删除
- MySQL中利用外键实现级联删除、更新
- 【hibernate框架】关系映射之一对一单向外键关联(XML实现)
- MySQL中利用外键实现级联删除、更新
- 【hibernate框架】关系映射之一对一单项外键关联(Annotation实现)
- MySQL WorkBench中利用外键实现级联删除、更新
- MySQL中利用外键实现级联删除、更新
- MySQL中利用外键实现级联删除、更新
- 几种类间关系:继承、实现、依赖、关联、聚合、组合及UML实现图
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- MSSQL数据同步利用数据库复制技术实现数据同步更新复制的概念
- Entity Framework - 理清关系 - 基于外键关联的单向一对一关系
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
- UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 .
- SQL Server 利用触发器对多表视图进行更新的实现方法
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- UML关系:继承(泛化)、实现、依赖、关联、聚合、组合的联系与区别