前面的博客也讲到了使用数据集(此处为DataSet)更新数据库。
已经了解到DataSet与数据源是断开的,所以不能直接使用DataSet将更改后的数据更新
到数据源。这里用到了数据适配器(DataAdapter)
如何做?
答:1,从 数据源——>数据集:调用DataAdapter的Fill()方法;
2,从 数据集——>数据源:调用DataAdapter的Update()方法;
也就是说
——数据适配器是一座桥梁,用于在数据源和数据集之间交换数据
理论不能代替实践,以下例子更轻松理解:
- <span style="font-size:24px;">Imports System.Data
- Imports System.Data.SqlClient
-
- Public Class Class1
- Public Function GetConnection() As SqlConnection
-
- Dim strConn As String = "server=HANXUEMIN\实例韩学敏;Database=user;uid=sa;pwd=123456" '连接数据库字符串
- Dim cn As SqlConnection = New SqlConnection(strConn) <span style="color:#006600;"> '直接通过Connection类的构造函数指定连接串
- </span>
- cn.Open() '打开连接 打开连接后才可以从数据库中取出数据到数据集中
- Dim sql As String = "select * from user" 'sql命令
- Dim cmd As SqlCommand = New SqlCommand(sql, cn) '构造名为cmd的命令对象。利用Command构造函数,指定:使用的连接对象为cn,执行的命令是从user表中选择所有数据
-
- Dim myDataAdapter As SqlDataAdapter = New SqlDataAdapter() '创建适配器
- myDataAdapter.SelectCommand = cmd
-
-
- 'Dim myDataAdapter As SqlDataAdapter = New SqlDataAdapter(cmd)
-
- Dim custCB As SqlCommandBuilder = New SqlCommandBuilder(myDataAdapter) '自动生成用于数据集更新的命令
-
- Dim ds As DataSet = New DataSet() '创建数据集
- myDataAdapter.Fill(ds, "user") '使用适配器的Fill()方法,把从数据源中选中的记录添加到数据集中
-
- '修改数据集
- Dim myDataRow As DataRow = ds.Tables(0).NewRow '在数据集中添加一条记录
- myDataRow("UserName") = "韩学敏"
- myDataRow("PassWord") = 123
- ds.Tables(0).Rows.Add(myDataRow)
-
- ds.Tables(0).Rows(1)(0) = "陈小二" '在数据集中修改一条记录
- ds.Tables(0).Rows(1)(1) = "456"
-
- ds.Tables(0).Rows(2).Delete() '在数据集中删除一条记录
-
- myDataAdapter.Update(ds)
- cn.Close() '数据从数据集更新到数据源后,需要关闭连接
-
-
-
-
-
- End Function
-
- End Class</span>
|