如何:使用 LINQ 修改数据库中的数据 (Visual Basic)
使用语言集成查询 (LINQ) 查询可以轻松访问数据库信息和修改数据库中的值。
下面的示例演示如何创建一个新应用程序,用于检索和更新 SQL Server 数据库中的信息。
本主题中的示例使用 Northwind 示例数据库。 如果你的开发计算机上没有此数据库,可以从 Microsoft 下载中心进行下载。 有关说明,请参阅下载示例数据库。
创建与数据库的连接
在 Visual Studio 中,通过单击“视图”菜单打开“服务器资源管理器/数据库资源管理器”,然后选择“服务器资源管理器/数据库资源管理器”。
在“服务器资源管理器/数据库资源管理器”中右键单击“数据连接”,再单击“添加连接”。
指定与 Northwind 示例数据库的有效连接。
使用 LINQ to SQL 文件添加项目
在 Visual Studio 中的“文件”菜单上,指向“新建”,然后单击“项目”。 选择 Visual Basic“Windows 窗体应用程序”作为项目类型。
在 “项目” 菜单上,单击 “添加新项”。 选择“LINQ to SQL 类”项模板。
命名文件
northwind.dbml
。 单击“添加”。 将打开northwind.dbml
文件的对象关系设计器(O/R 设计器)。
向设计器添加要查询和修改的表
在“服务器资源管理器/数据库资源管理器”中,展开与 Northwind 数据库的连接。 展开 “表” 文件夹。
如果关闭了 O/R 设计器,可通过双击先前添加的
northwind.dbml
文件来重新打开它。单击“Customers”表并将其拖放到设计器的左侧窗格中。
设计器将为项目创建新的 Customer 对象。
保存更改并关闭设计器。
保存你的项目。
添加代码以修改数据库并显示结果
从“工具箱”中,将 DataGridView 控件拖放到项目的默认 Windows 窗体 (Form1) 中。
将表添加到 O/R 设计器后,设计器将向项目中添加一个 DataContext 对象。 此对象包含可用于访问 Customers 表的代码。 它还包含用于定义该表的本地 Customer 对象和 Customers 集合的代码。 项目的 DataContext 对象是根据 .dbml 文件的名称命名的。 对于此项目,DataContext 对象命名为
northwindDataContext
。可在代码中创建 DataContext 对象的实例,并查询和修改由 O/R 设计器指定的 Customers 集合。 在通过调用 DataContext 对象的 SubmitChanges 方法提交更改之前,对 Customers 集合所做的更改不会反映在数据库中。
双击 Windows 窗体 (Form1) 将代码添加到 Load 事件,以查询作为 DataContext 属性公开的 Customers 表。 添加以下代码:
Private db As northwindDataContext Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles MyBase.Load db = New northwindDataContext() RefreshData() End Sub Private Sub RefreshData() Dim customers = From cust In db.Customers Where cust.City(0) = "W" Select cust DataGridView1.DataSource = customers End Sub
从“工具箱”中,将三个 Button 控件拖到窗体上。 选择第一个
Button
控件。 在“属性”窗口中,将Button
控件的Name
设置为AddButton
,将Text
设置为Add
。 选择第二个按钮,并将Name
属性设置为UpdateButton
,将Text
属性设置为Update
。 选择第三个按钮,并将Name
属性设置为DeleteButton
,将Text
属性设置为Delete
。双击“添加”按钮将代码添加到其
Click
事件。 添加以下代码:Private Sub AddButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs ) Handles AddButton.Click Dim cust As New Customer With { .City = "Wellington", .CompanyName = "Blue Yonder Airlines", .ContactName = "Jill Frank", .Country = "New Zealand", .CustomerID = "JILLF"} db.Customers.InsertOnSubmit(cust) Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
双击“更新”按钮将代码添加到其
Click
事件。 添加以下代码:Private Sub UpdateButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles UpdateButton.Click Dim updateCust = (From cust In db.Customers Where cust.CustomerID = "JILLF").ToList()(0) updateCust.ContactName = "Jill Shrader" updateCust.Country = "Wales" updateCust.CompanyName = "Red Yonder Airlines" updateCust.City = "Cardiff" Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
双击“删除”按钮将代码添加到其
Click
事件。 添加以下代码:Private Sub DeleteButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs ) Handles DeleteButton.Click Dim deleteCust = (From cust In db.Customers Where cust.CustomerID = "JILLF").ToList()(0) db.Customers.DeleteOnSubmit(deleteCust) Try db.SubmitChanges() Catch ' Handle exception. End Try RefreshData() End Sub
按 F5 运行项目。 单击“添加”以添加新记录。 单击“更新”以修改新记录。 单击“删除”以删除新记录。