如何:使用 LINQ 修改数据库中的数据 (Visual Basic)

使用语言集成查询 (LINQ) 查询可以轻松访问数据库信息和修改数据库中的值。

下面的示例演示如何创建一个新应用程序,用于检索和更新 SQL Server 数据库中的信息。

本主题中的示例使用 Northwind 示例数据库。 如果你的开发计算机上没有此数据库,可以从 Microsoft 下载中心进行下载。 有关说明,请参阅下载示例数据库

创建与数据库的连接

  1. 在 Visual Studio 中,通过单击“视图”菜单打开“服务器资源管理器/数据库资源管理器”,然后选择“服务器资源管理器/数据库资源管理器”。

  2. 在“服务器资源管理器/数据库资源管理器”中右键单击“数据连接”,再单击“添加连接”。

  3. 指定与 Northwind 示例数据库的有效连接。

使用 LINQ to SQL 文件添加项目

  1. 在 Visual Studio 中的“文件”菜单上,指向“新建”,然后单击“项目”。 选择 Visual Basic“Windows 窗体应用程序”作为项目类型。

  2. “项目” 菜单上,单击 “添加新项”。 选择“LINQ to SQL 类”项模板。

  3. 命名文件 northwind.dbml。 单击“添加”。 将打开 northwind.dbml 文件的对象关系设计器(O/R 设计器)。

向设计器添加要查询和修改的表

  1. 在“服务器资源管理器/数据库资源管理器”中,展开与 Northwind 数据库的连接。 展开 “表” 文件夹。

    如果关闭了 O/R 设计器,可通过双击先前添加的 northwind.dbml 文件来重新打开它。

  2. 单击“Customers”表并将其拖放到设计器的左侧窗格中。

    设计器将为项目创建新的 Customer 对象。

  3. 保存更改并关闭设计器。

  4. 保存你的项目。

添加代码以修改数据库并显示结果

  1. 从“工具箱”中,将 DataGridView 控件拖放到项目的默认 Windows 窗体 (Form1) 中。

  2. 将表添加到 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
    
  3. 从“工具箱”中,将三个 Button 控件拖到窗体上。 选择第一个 Button 控件。 在“属性”窗口中,将 Button 控件的 Name 设置为 AddButton,将 Text 设置为 Add。 选择第二个按钮,并将 Name 属性设置为 UpdateButton,将 Text 属性设置为 Update。 选择第三个按钮,并将 Name 属性设置为 DeleteButton,将 Text 属性设置为 Delete

  4. 双击“添加”按钮将代码添加到其 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
    
  5. 双击“更新”按钮将代码添加到其 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
    
  6. 双击“删除”按钮将代码添加到其 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
    
  7. 按 F5 运行项目。 单击“添加”以添加新记录。 单击“更新”以修改新记录。 单击“删除”以删除新记录。

另请参阅