Evil 域

当Evil遇上先知

导航

VB9.0新特性之LINQ(七)——增、删、改操作

Posted on 2008-08-10 10:01  Saar  阅读(1128)  评论(1编辑  收藏  举报

前文,我们针对SQL演示数据库,展开了各种各样的查询。而数据库编程中,四雄CRUD往往一起出现。本篇,我们将介绍LINQ中的CUD操作。

CRUD是什么东西?嘿嘿,CRUD就是当当当当当当当当~

  • Create 创建 (增)
  • Retrieve 选择 (查)
  • Update 更新 (改)
  • Delete 删除 (删)

连起来,就形成了数据库编程中,四个最基本的操作——增删改查。

本篇,我们将探索:

  • 增加一条记录;
  • 修改这条记录;
  • 删除这条记录

Let go through one by one

 

增加一条记录:

目标:往NbStorage数据中,增加一条型号为X300笔记本的记录,它是LENOVO公司的笔记本,售价28000,重2.1千克,并且存放在1号仓库中。

(如果您不明白NbStorage是什么,那么,请参考《VB9.0新特性之LINQ(四) - LINQ to SQL》一文)

首先,我们来看一下当前的数据库情况。打开SQL的查询分析器,执行SQL语句把数据查询出来:

select * from notebookstorage

 

结果如下:

我们来看看如何通过SQL,把数据插入到数据表中。

首先,创建一个数据库实例,然后我们根据要求创建一个NbStorage的对象entityToAdd:

Dim db As NbStorageDataContext = New NbStorageDataContext()

Dim entityToAdd = New NotebookStorage With { _

        .Brand = "Lenovo", _

        .Type = "X300", _

        .Price = 28000, _

        .Weight = 2.1, _

        .WarehouseId = 1}

 

然后,声明在Submit时,要提交这个修改:

'Declare that it will be insert when submit

db.NotebookStorages.InsertOnSubmit(entityToAdd)

 

最后,进行提交操作:

'Submit change

Try

    db.SubmitChanges()

Catch ex As Exception

    Console.WriteLine(String.Format("{0} - {1}", "插入失败", ex.Message))

End Try

 

插入后,我们得到的SQL结果如下,新增行已经反选显示,这一条数据就已经被插入:

 

修改一条记录:

目标:在NbStorage数据中,刚才新增的X300笔记本,由于时期促销,需要降价至90%,因此,我们需要把对数据库记录进行更新:

第一步,建立数据库,并且获取出需要修改的记录:

'Create db

Dim db = New NbStorageDataContext()

'Retrieve the entity need to update

Dim entityToUpdate = (From aLaptop In db.NotebookStorages _

                        Where aLaptop.Brand = "Lenovo" And _

                        aLaptop.Type = "X300" _

                        Select aLaptop).FirstOrDefault()

 

第二步,根据要求,修改实例数据:

'Cut off to 90%

entityToUpdate.Price = entityToUpdate.Price * 0.9

 

第三步,提交修改:

'Submit change

Try

    db.SubmitChanges()

Catch ex As Exception

    Console.WriteLine(String.Format("{0} - {1}", "更新失败", ex.Message))

End Try

 

提交修改以后,数据库中的结果如下:

 

删除一条记录:

目标:在NbStorage数据中,刚才新增的X300笔记本,销售火爆,已经断货,故需要将其从数据库中删除:

第一步,建立数据库,并且获取出需要删除的记录:

'Create db

Dim db = New NbStorageDataContext

'Retrieve the entity to delete

Dim entityToDelete = (From aLaptop In db.NotebookStorages _

                        Where aLaptop.Brand = "Lenovo" And _

                        aLaptop.Type = "X300").FirstOrDefault()

 

第二步,根据条件,声明要删除的实体:

'Delcare delete the entity in db

db.NotebookStorages.DeleteOnSubmit(entityToDelete)

 

第三步,提交变更:

'Submit change

Try

    db.SubmitChanges()

Catch ex As Exception

    Console.WriteLine(String.Format("{0} - {1}", "删除失败", ex.Message))

End Try

 

删除以后,我们再次进行数据库查询,看到X300的记录,已经被删除了。

 

让我们来小结一下:

数据库中常用的操作有CRUD四种,本篇涉及到了其中三种操作(其实,删、改操作也用到了选择操作)。每一种操作,都是先对数据要做的操作进行准备——或者是新建实体,或者是选择出需要操作的实体。然后,进行相应的增删改操作,但此时的操作不会立即提交到数据库。最后,提交修改,如果没有出现异常,那么,将对数据库作出相应的修改。

 

附:本文中涉及到的三个操作对应的代码:

    Public Sub Insert()

        Dim db As NbStorageDataContext = New NbStorageDataContext()

        Dim entityToAdd = New NotebookStorage With { _

                            .Brand = "Lenovo", _

                            .Type = "X300", _

                            .Price = 28000, _

                            .Weight = 2.1, _

                            .WarehouseId = 1}

        'Declare that it will be insert when submit

        db.NotebookStorages.InsertOnSubmit(entityToAdd)

 

        'Submit change

        Try

            db.SubmitChanges()

        Catch ex As Exception

            Console.WriteLine(String.Format("{0} - {1}", "插入失败", ex.Message))

        End Try

 

    End Sub

 

    Public Sub Update()

        'Create db

        Dim db = New NbStorageDataContext()

        'Retrieve the entity need to update

        Dim entityToUpdate = (From aLaptop In db.NotebookStorages _

                            Where aLaptop.Brand = "Lenovo" And _

                            aLaptop.Type = "X300" _

                            Select aLaptop).FirstOrDefault()

        'Cut off to 90%

        entityToUpdate.Price = entityToUpdate.Price * 0.9

 

 

        'Submit change

        Try

            db.SubmitChanges()

        Catch ex As Exception

            Console.WriteLine(String.Format("{0} - {1}", "更新失败", ex.Message))

        End Try

 

    End Sub

 

    Public Sub Delete()

        'Create db

        Dim db = New NbStorageDataContext

        'Retrieve the entity to delete

        Dim entityToDelete = (From aLaptop In db.NotebookStorages _

                             Where aLaptop.Brand = "Lenovo" And _

                             aLaptop.Type = "X300").FirstOrDefault()

        'Delcare delete the entity in db

        db.NotebookStorages.DeleteOnSubmit(entityToDelete)

        'Submit change

        Try

            db.SubmitChanges()

        Catch ex As Exception

            Console.WriteLine(String.Format("{0} - {1}", "删除失败", ex.Message))

        End Try

 

 

    End Sub