前文,我们针对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 |
Little knowledge is dangerous.