一、结构
DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。
二、非连接类与数据库对应关系
1、DataSet:是 ADO.NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet 由一组DataTable 对象组成。
2、DataTable:数据表。
3、DataTableCollection就是管理DataSet中的所有DataTable对象。表示DataSet中两个DataTable对象之间的父/子关系是DataRelation对象。它使一个DataTable中的行与另一个DataTable中的行相关联。这种关联类似于关系数据库中数据表之间的主键列和 外键列之间的关联。
三、特性
(1)独立性。DataSet独立于各种数据源。
(2) 离线(断开)和连接。
(3)DataSet对象是一个可以用XML形式表示的数据视图,是一种数据关系视图。
四、使用方法
(1)把数据库中的数据通过DataAdapter对象填充DataSet。
(2)通过DataAdapter对象操作DataSet实现更新数据库。
(3)把XML数据流或文本加载到DataSet。
五、具体应用
1、查找某个特定字段数据
<span style="font-size:18px;">(1)DataTable:
DataTable1.Rows[index].Cells[index].Text;
DataTable1.Rows[i][j].ToString();
Text1.text =DataTable.Rows(1)(1)
(2)DatagridView
窗体.DatagridView.CurrentRow.Cells("列名").Value.ToString</span>
2、判断DataTable是否为空
<span style="font-size:18px;">DataTable.rows.count <1
table1 == null
table.Rows.Count == 0
if Not (Convert.IsDBNull(dt.Rows(1)(1)) then 第一行第一列是否为空</span>
3、直接写入到表中
<span style="font-size:18px;">(1)读取数据方法如下:
Dim ds As New DataTable ‘定义一个DataTable来接收从数据库读取出来的符合条件的数据
Dim ReadData AsNew SqlDataAdapter(Objcmd) '用于读取数据库,和给DataTable 赋值
Objconn.Open() ‘连接数据库
ReadData.Fill(ds) ‘读取数据库中的信息
(2) 手动填写数据到DataTable
在向DataTable中填写数据之前,首先要给DataTable添加 “行” 和 “列”:
Dim dataTable As New DataTable '用于接收所有需要在界面显示的信息
Dim dtRowsOnlineInfo AsDataRow ‘定义一行
Dim dtColumn AsDataColumn ‘定以一列
dtRowsOnlineInfo =dtInfo.NewRow ‘实例化行
dtInfo.Rows.Add(dtRowsOnlineInfo) ‘ 将实例化后的行添加到DataTable中
dtColumn = NewDataColumn("0") ‘添加一列,列名为“0”
dtInfo.Columns.Add(dtColumn) ‘添加列
dtColumn = New DataColumn("1")
dtInfo.Columns.Add(dtColumn)
建表后,可添加数据
dtInfo.Rows(2)(0) = etyStuInfo.SchoolNum
dtInfo.Rows(2)(1) = etyStuInfo.StuName
dtInfo.Rows(2)(2) = etyStuInfo.Sex
dtInfo.Rows(2)(3) = etyStuInfo.Balance
通过对应的行号和列号为DataTable赋值。</span>
4、 读取数据
<span style="font-size:18px;">(1) 读取DataTable所有数据
DataGridView.DataSource=Datatable ‘这样就可以直接将数据显示出来了。读取单个单元格的数据
(2)读取DataSet所有数据
DataGridView.DataSource=DataSet
gridOnWork.DataMember = "表" </span>
注意:当访问 DataTable对象时,请注意它们是按条件区分大小写的。例如,如果一个 DataTable被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。例如,如 果 DataSet 只包含 Table1,则可以使用 myDS.Tables[ "TABLE1"] 来引用它。