前文,我们针对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语句把数据查询出来:
结果如下:
我们来看看如何通过SQL,把数据插入到数据表中。
首先,创建一个数据库实例,然后我们根据要求创建一个NbStorage的对象entityToAdd:
Dim db As NbStorageDataContext = New
Dim entityToAdd = New NotebookStorage With
"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
Console.WriteLine(String.Format("{0} - {1}", "插入失败", ex.Message))
End Try
|
插入后,我们得到的SQL结果如下,新增行已经反选显示,这一条数据就已经被插入:
修改一条记录:
目标:在NbStorage数据中,刚才新增的X300笔记本,由于时期促销,需要降价至90%,因此,我们需要把对数据库记录进行更新:
第一步,建立数据库,并且获取出需要修改的记录:
'Create db
Dim db = New
'Retrieve the entity need to update
Dim entityToUpdate = (From aLaptop In
Where aLaptop.Brand = "Lenovo" And
aLaptop.Type = "X300"
Select
|
第二步,根据要求,修改实例数据:
'Cut off to 90%
entityToUpdate.Price = entityToUpdate.Price * 0.9
|
第三步,提交修改:
'Submit change
Try
db.SubmitChanges()
Catch ex As
Console.WriteLine(String.Format("{0} - {1}", "更新失败", ex.Message))
End Try
|
提交修改以后,数据库中的结果如下:
删除一条记录:
目标:在NbStorage数据中,刚才新增的X300笔记本,销售火爆,已经断货,故需要将其从数据库中删除:
第一步,建立数据库,并且获取出需要删除的记录:
'Create db
Dim db = New
'Retrieve the entity to delete
Dim entityToDelete = (From aLaptop In
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
Console.WriteLine(String.Format("{0} - {1}", "删除失败", ex.Message))
End Try
|
删除以后,我们再次进行数据库查询,看到X300的记录,已经被删除了。
让我们来小结一下:
数据库中常用的操作有CRUD四种,本篇涉及到了其中三种操作(其实,删、改操作也用到了选择操作)。每一种操作,都是先对数据要做的操作进行准备——或者是新建实体,或者是选择出需要操作的实体。然后,进行相应的增删改操作,但此时的操作不会立即提交到数据库。最后,提交修改,如果没有出现异常,那么,将对数据库作出相应的修改。
附:本文中涉及到的三个操作对应的代码:
Public Sub
Dim db As NbStorageDataContext = New
Dim entityToAdd = New NotebookStorage With
"Lenovo", _
"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
String.Format("{0} - {1}", "插入失败", ex.Message))
End Try
End Sub
Public Sub
'Create db
Dim db = New
'Retrieve the entity need to update
Dim entityToUpdate = (From aLaptop In
Where aLaptop.Brand = "Lenovo" And
"X300"
Select
'Cut off to 90%
entityToUpdate.Price = entityToUpdate.Price * 0.9
'Submit change
Try
db.SubmitChanges()
Catch ex As
String.Format("{0} - {1}", "更新失败", ex.Message))
End Try
End Sub
Public Sub
'Create db
Dim db = New
'Retrieve the entity to delete
Dim entityToDelete = (From aLaptop In
Where aLaptop.Brand = "Lenovo" And
"X300").FirstOrDefault()
'Delcare delete the entity in db
db.NotebookStorages.DeleteOnSubmit(entityToDelete)
'Submit change
Try
db.SubmitChanges()
Catch ex As
String.Format("{0} - {1}", "删除失败", ex.Message))
End Try
End Sub
|