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

Language-Integrated 查询(LINQ)查询可以轻松访问数据库信息并修改数据库中的值。

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

本文中的示例使用 Northwind 示例数据库。 若要获取数据库,请参阅 下载示例数据库

创建与数据库的连接

  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. 单击“客户”表并将其拖到设计器的左窗格中。

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

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

  4. 保存项目。

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

  1. 工具箱中,将 DataGridView 控件拖到项目 Form1 的默认 Windows 窗体上。

  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 运行项目。 单击“添加”以添加新记录。 单击“更新”以修改新记录。 单击“删除 以删除新记录。

另请参阅