我想知道DATATABLE的用途?

yong1130 2003-10-19 04:01:39
我看了许多VB.NET数据库编程方面的书,可是照书上的例子根本无法运行,所以我一直不知道DATATABLE的用法?肯请指教。我的MAIL:POSTMASTER@MORRISON-KS。COM
...全文
156 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
91bct 2003-10-19
  • 打赏
  • 举报
回复
其实楼上几位说得没错,MSDN是相当不错的帮助文档,
刚开始用可能不太习惯,用惯就好了。
91bct 2003-10-19
  • 打赏
  • 举报
回复
下面是示例:

private void MakeChildTable(){
// Create a new DataTable.
DataTable myDataTable = new DataTable("childTable");
DataColumn myDataColumn;
DataRow myDataRow;

// Create first column and add to the DataTable.
myDataColumn = new DataColumn();
myDataColumn.DataType= System.Type.GetType("System.Int32");
myDataColumn.ColumnName = "ChildID";
myDataColumn.AutoIncrement = true;
myDataColumn.Caption = "ID";
myDataColumn.ReadOnly = true;
myDataColumn.Unique = true;
// Add the column to the DataColumnCollection.
myDataTable.Columns.Add(myDataColumn);

// Create second column.
myDataColumn = new DataColumn();
myDataColumn.DataType= System.Type.GetType("System.String");
myDataColumn.ColumnName = "ChildItem";
myDataColumn.AutoIncrement = false;
myDataColumn.Caption = "ChildItem";
myDataColumn.ReadOnly = false;
myDataColumn.Unique = false;
myDataTable.Columns.Add(myDataColumn);

// Create third column.
myDataColumn = new DataColumn();
myDataColumn.DataType= System.Type.GetType("System.Int32");
myDataColumn.ColumnName = "ParentID";
myDataColumn.AutoIncrement = false;
myDataColumn.Caption = "ParentID";
myDataColumn.ReadOnly = false;
myDataColumn.Unique = false;
myDataTable.Columns.Add(myDataColumn);

myDataSet.Tables.Add(myDataTable);
// Create three sets of DataRow objects, five rows each, and add to DataTable.
for(int i = 0; i <= 4; i ++){
myDataRow = myDataTable.NewRow();
myDataRow["childID"] = i;
myDataRow["ChildItem"] = "Item " + i;
myDataRow["ParentID"] = 0 ;
myDataTable.Rows.Add(myDataRow);
}
for(int i = 0; i <= 4; i ++){
myDataRow = myDataTable.NewRow();
myDataRow["childID"] = i + 5;
myDataRow["ChildItem"] = "Item " + i;
myDataRow["ParentID"] = 1 ;
myDataTable.Rows.Add(myDataRow);
}
for(int i = 0; i <= 4; i ++){
myDataRow = myDataTable.NewRow();
myDataRow["childID"] = i + 10;
myDataRow["ChildItem"] = "Item " + i;
myDataRow["ParentID"] = 2 ;
myDataTable.Rows.Add(myDataRow);
}
}

private void MakeDataRelation(){
// DataRelation requires two DataColumn (parent and child) and a name.
DataRelation myDataRelation;
DataColumn parentColumn;
DataColumn childColumn;
parentColumn = myDataSet.Tables["ParentTable"].Columns["id"];
childColumn = myDataSet.Tables["ChildTable"].Columns["ParentID"];
myDataRelation = new DataRelation("parent2Child", parentColumn, childColumn);
myDataSet.Tables["ChildTable"].ParentRelations.Add(myDataRelation);
}

private void BindToDataGrid(){
// Instruct the DataGrid to bind to the DataSet, with the
// ParentTable as the topmost DataTable.
dataGrid1.SetDataBinding(myDataSet,"ParentTable");
}
91bct 2003-10-19
  • 打赏
  • 举报
回复
下面是MSDN上的一段描述:
DataTable 是 ADO.NET 库中的核心对象。其他使用 DataTable 的对象包括 DataSet 和 DataView。

当访问 DataTable 对象时,注意它们是按条件区分大小写的。例如,如果一个 DataTable 被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。有关使用 DataTable 对象的更多信息,请参见创建数据表。

如果正在以编程方式创建 DataTable,则必须先通过将 DataColumn 对象添加到 DataColumnCollection(通过 Columns 属性访问)中来定义其架构。有关添加 DataColumn 对象的更多信息,请参见在表中添加列。

若要向 DataTable 中添加行,必须先使用 NewRow 方法返回新的 DataRow 对象。NewRow 方法返回具有 DataTable 的架构的行,就像由该表的 DataColumnCollection 定义的那样。DataTable 可存储的最大行数是 16,777,216。有关更多信息,请参见将数据添至表中。

表的架构由 DataColumn 对象的集合 DataColumnCollection 定义。通过 Columns 属性访问 DataColumnCollection。有关定义表的架构的更多信息,请参见 DataColumn 和 DataColumnCollection。

DataTable 包含可用于确保数据完整性的 Constraint 对象的集合。有关更多信息,请参见将约束添加到表。

若要确定何时对表进行更改,请使用以下某个事件:RowChanged、RowChanging、RowDeleting 和 RowDeleted。有关更多信息,请参见使用 DataTable 事件。

当创建 DataTable 的实例时,某些读/写属性将被设置为初始值。有关这些值的列表,请参见 DataTable 构造函数。

注意 DataSet 和 DataTable 对象从 MarshalByValueComponent 继承而来,并支持用于远程处理的 ISerializable 接口。这些是仅有的可以远程处理的 ADO.NET 对象。
下面是示例:
// Put the next line into the Declarations section.
private System.Data.DataSet myDataSet;

private void MakeDataTables(){
// Run all of the functions.
MakeParentTable();
MakeChildTable();
MakeDataRelation();
BindToDataGrid();
}

private void MakeParentTable(){
// Create a new DataTable.
System.Data.DataTable myDataTable = new DataTable("ParentTable");
// Declare variables for DataColumn and DataRow objects.
DataColumn myDataColumn;
DataRow myDataRow;

// Create new DataColumn, set DataType, ColumnName and add to DataTable.
myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.Int32");
myDataColumn.ColumnName = "id";
myDataColumn.ReadOnly = true;
myDataColumn.Unique = true;
// Add the Column to the DataColumnCollection.
myDataTable.Columns.Add(myDataColumn);

// Create second column.
myDataColumn = new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "ParentItem";
myDataColumn.AutoIncrement = false;
myDataColumn.Caption = "ParentItem";
myDataColumn.ReadOnly = false;
myDataColumn.Unique = false;
// Add the column to the table.
myDataTable.Columns.Add(myDataColumn);

// Make the ID column the primary key column.
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = myDataTable.Columns["id"];
myDataTable.PrimaryKey = PrimaryKeyColumns;

// Instantiate the DataSet variable.
myDataSet = new DataSet();
// Add the new DataTable to the DataSet.
myDataSet.Tables.Add(myDataTable);

// Create three new DataRow objects and add them to the DataTable
for (int i = 0; i<= 2; i++){
myDataRow = myDataTable.NewRow();
myDataRow["id"] = i;
myDataRow["ParentItem"] = "ParentItem " + i;
myDataTable.Rows.Add(myDataRow);
}
}
zyg9108 2003-10-19
  • 打赏
  • 举报
回复
还有SDK
zyg9108 2003-10-19
  • 打赏
  • 举报
回复
兄弟你呀应该学会使用MSDN
浩子 2003-10-19
  • 打赏
  • 举报
回复
这个呀,查MSDN最详细了:P
本课程是PowerBI系列课程之DAX函数专题讲解,包含以下内容 1.  DAX函数基础知识什么是DAX函数数学函数:ABS、DIVIDE、MOD、RAND、ROUND、FIXED等日期和时间函数: CALENDAR、CALENDARAUTO、MONTH、YEAR、DATE、DT等信息函数:USERNAME、USERPRINCIPALNAME、HASONEFILTER、HASONEVALUE、ISFILTERED、ISCROSSFILTERED、ISINSCOPE、ISBLANK、SELECTEDMEASURE、SELECTEDMEASURENAME等逻辑函数:AND、OR、IF、IFERROR、SWITCH、TRUE、FALSE、COALESCE(官方文档含糊不清-结合实例)等关系函数:CROSSFILTER、RELATED、RELATEDTABLE等筛选器函数:FILTER、CALCULATE、ALL、ALLEXCEPT、ALLSELECTED、EARLIER、KEEPFILTERS、REMOVEFILTERS、SELECTEDVALUE、LOOKUPVALUE等父子函数:PATH、PATHCONTAINS、PATHITEM、PATHLENGTH等统计函数:AVERAGE、COUNT、MAX、MIN、SUM等迭代统计函数:AVERAGEX、COUNTX、MAXX、MINX、SUMX、RANKX等表函数: FILTERS 、ADDCOLUMNS、 SELECTCOLUMNS、 CROSSJOIN、 EXCEPT、 GENERATE、 GROUPBY、 SUMMARIZE、 SUMMARIZECOLUMNS、 TOPN、 TREATAS、 UNION、 VALUES、DISTINCT、DATATABLE、NATUALINNERJOIN、NATRUALLEFTOUTERJOIN等文本函数: EXACT、MID、 FIND、 LEN、 REPT、 LOWER、 UPPER、 UNICHAR等时间智能函数:DATEADD、DATESMTD、FIRSTDATE、LASTDATE、SAMEPERIODLASTYEAR等财务函数:2020.7之后发布的,和Excel中财务函数相似,网页和demo pbix简单介绍其他函数:BLANK、ERROR、IFERROR等 DAX函数初体验:Max、Sum、Divide、if、Values等值函数表函数以及表和列的概念DAX函数术语、语法、运算符DAX运算符和引擎中字母大小写问题DAX编程注释和快捷键DAX与Excel函数的共同点和区别(PPT)DAX、xmSQL与SQL表达式的区别(PPT)DAX函数的自学途径 2.  PowerBI中数据建模知识维度建模关系传递和交叉筛选器方向-理解表关系(1v1, 1vM, Mv1,MvM)两个方向上应用安全筛选器关闭关系自动检测新建计算列新建度量值新建计算表:辅助表(五种方式)、日历表数据类型讲解数据格式控制:%、$、千位分隔符、小数位、日期格式Format函数自定义数据格式Convert函数做数据类型转换解决中文数字单位 万 的显示问题Date和DT函数定义固定日期值显示和隐藏列DAX代码分析器阅读DAX表达式方法:从上至下、由内到外(注意Calculate的计算顺序)调试DAX表达式方法:分布输出或VAR输出3.  DAX函数原理 Vertipaq列式数据库原理理解度量值和计算列理解行上下文和筛选上下文:Calculate示意图行上下文中使用VAR替代EARLIERVAR变量在定义时的上下文中计算VAR变量是采用惰性计算(使用时计算)理解扩展表和RELATED函数理解数据沿袭Lineage 4.  开始感知DAX函数的强大DAX函数实现特殊符号的使用DAX函数实现切片器默认当前月或天DAX函数使切片器默认代表无任何选择DAX函数使切片器仅显示有数据的选项DAX函数使切片器反向筛选和计算DAX函数使切片器之间取并集DAX函数使关系中多端的切片器筛选一端的切片器 DAX函数实现年月共同决定数据排序DAX函数实现动态图表标题DAX函数实现动态图表配色和图标DAX函数实现动态纵坐标DAX函数实现动态横坐标5.  理解重点DAX函数重中之重FILTER 和 CALCULATE和CALCULATETABLE详解调节器REMOVEFILTERS和ALL、ALLEXCEPT函数调节器ALL、ALLSELECTED和ISINSCOPE占比分析调节器AllSELECTED和KEEPFILTERS的比较调节器USERELATIONSHIP激活关系调节器TREATAS动态建立关系调节器CROSSFILTER改变筛选器方向重点之ISFILTERED和ISCROSSFILTERED重点之HASONEVALUE和ISINSCOPE的区别重点之表函数SELECTEDCOLUMNS和ADDCOLUMNS重点之表函数NATUALINNERJOIN和NATRUALLEFTOUTERJOIN重点之表函数FILTERS和VALUES比较重点之VALUES和DISTINCT的区别重点之分组函数SUMMARIZECOLUMNS详解重点之函数LOOKUPVALUE vs RELATED vs VLOOKUP 重点之集合函数UNION、INTERSECT、EXCEPT重点之集合函数CROSSJOIN和GENERATE 笛卡尔积重点之值合并、列合并、表合并CONCATENATEX重点之BLANK行产生的原因和BLANK相关函数重点之COALESCE函数处理空重点之FIRSTNOBLANK和FIRSTNOBLANKVALUE函数重点之使用VAR变量表中的列重点之Error和IfError函数6.  实际案例-日期时间和时间智能相关关键点-日期表和事实表关联问题时间智能-同比环比分析时间智能-累计聚合、滚动聚合、移动平均时间智能-期初期末库存分析日期分析-计算任意所选月份的环比日期分析-周的同比环比和周聚合日期分析-指定月份的同比环比和季度环比日期分析-计算季末或季末月份的数据日期分析-趋势图中根据最近月份取TopN日期分析-动态指定某个日期区间分析日期分析-动态任意区间段做数据对比日期分析-实现两个日期列的范围筛选日期分析-按工作日计算日期差日期分析-计算最近两次购买日期差日期分析-根据历史数据做销售预测日期时间函数和时间智能函数使用总结7.  实际案例-DAX函数进阶进阶-解决列排序对计算的影响进阶-实现切片器筛选之间的OR逻辑进阶-矩阵Matrix中高亮显示最大值最小值进阶-DAX列转行 vs 矩阵列转行和逆透视进阶-非日期类型的累计聚合进阶-排名逻辑的4种实现-RANKX详解进阶-分组内排名的实现和理解迭代函数进阶-TopN/BottomN和Others的实现进阶-TopN中实现动态指标进阶-TopN中实现N的动态进阶-分组内动态TopN和Others 进阶-商品折上折-迭代函数SUMX详解 进阶-分析客户购买行为进阶-找出无购买行为的客户进阶-客户购买商品关联度分析 进阶-新客户分析进阶-流失客户分析进阶-回流客户分析进阶-客户购买频次和区间分析进阶-RFM客户价值分析进阶-帕累托分析进阶-盈亏平衡分析报表性能优化思路(PPT)  
通过 ADO.NET 访问数据 ADO.NET 概述 ADO.NET 的设计目标:讨论创建 ADO.NET 的动机和设计目标。 ADO.NET 结构:提供 ADO.NET 结构和组件的概述。 .NET 数据提供程序:提供有关随 ADO.NET 提供的 .NET 数据提供程序和 .NET 数据提供程序的设计的概述。 ADO.NET DataSet:提供有关 DataSet 设计和组件的概述。 为 .NET 数据提供程序编写通用代码:提供有关如何使用 ADO.NET 所提供的通用接口来编写一组对于任何 .NET 数据提供程序都将运行的代码的信息。 ADO.NET 示例应用程序:提供 ADO.NET 应用程序的示例,该示例从数据库中检索数据并将其返回到控制台。   使用 .NET 数据提供程序访问数据 使用 ADO.NET 连接到数据源:描述 ADO.NET Connection 对象,并说明如何使用它来连接到数据源。 执行命令:描述 ADO.NET Command 对象,并说明如何使用它来对数据源执行查询和命令。 使用 DataReader 检索数据:描述 ADO.NET DataReader 对象,并说明如何使用它从数据源返回结果流。 将存储过程用于命令:描述如何使用 Command 对象来调用存储过程,并提供有关发送和检索参数值的信息。 从数据库中获取单个值:描述如何使用 Command 从数据库查询中返回单个值。 从数据库中获取 BLOB 值:描述如何使用 DataReader 从数据库中返回二进制大对象 (BLOB)。 执行数据库操作和修改数据:描述如何使用 Command 对数据源发出 INSERT、UPDATE 和 DELETE 命令,以及如何执行目录操作(如创建或更改表)。 从 SQL Server 中以 XML 形式获取数据:描述如何使用 Command 以 XmlReader 形式返回 SQL Server FOR XML 查询的结果。 从 DataAdapter 填充 DataSet:描述如何通过 DataAdapter 来使用表、列和行填充 DataSet。 使用 DataAdapter 和 DataSet 更新数据库:描述如何使用 DataAdapter 将对 DataSet 中数据的更改解析回数据源。 向 DataSet 添加现有约束:描述如何从数据源填充 DataSet 的约束(如主键列的唯一约束)。 设置 DataTable 和 DataColumn 映射:描述如何使用表和列映射来提供从数据源中返回的列的应用程序特定名称。 将参数用于 DataAdapter:描述如何将参数用于 DataAdapter 的命令属性(包括如何将 DataSet 中列的内容映射到命令参数)。 输入和输出参数及返回值:描述如何将 DataSet 表中列的内容映射到 DataAdapter 命令属性的输入和输出参数(包括如何从存储过程中检索返回值)。 自动生成的命令:描述如何使用 CommandBuilder 为具有单个表 SELECT 命令的 DataAdapter 自动生成 INSERT、UPDATE 和 DELETE 命令。 使用 DataAdapter 事件:描述 DataAdapter 事件并说明如何使用这些事件。 从数据库中获取架构信息:解释如何从数据源中获取架构信息,如数据库或目录中表的列表。 执行事务:解释如何使用 Connection 和 Transaction 对象对数据源执行事务。 .NET 数据提供程序的代码访问安全性:描述随 .NET 框架提供的 .NET 数据提供程序的可用附加代码访问安全权限,并说明如何确定特定权限是否可用于所运行的代码。   创建和使用 DataSet 创建 DataSet:描述创建 DataSet 实例的语法。 向 DataSet 添加 DataTable:描述如何创建表和列并将其添加到 DataSet 中。 添加表间关系:描述如何创建 DataSet 中表之间的关系。 导航表间关系:描述如何使用 DataSet 中表之间的关系来返回具有父子关系的子行或父行。 将 DataSet 与现有数据一起使用"描述如何使用 DataAdapter 将 DataSet 中的更改解析回数据源。 合并 DataSet 内容:描述如何将一个 DataSet、DataTable 或 DataRow 数组的内容并入另一个 DataSet。 复制 DataSet 内容:描述如何创建可包含架构和指定数据的 DataSet 副本。 使用 DataSet 事件:描述 DataSet 的事件并说明如何使用这些事件。 使用类型化的 DataSet:描述类型化 DataSet 并说明如何创建和使用类型化 DataSet。   XML 和 DataSet:描述 DataSet 如何与作为数据源的 XML 进行交互(包括以 XML 数据的形式加载和保持 DataSet 的内容)。 DiffGram:提供有关 DiffGram 的详细信息,DiffGram 是一种用于读写 DataSet 内容的 XML 格式。 从 XML 中加载 DataSet:讨论在从 XML 文档中加载 DataSet 内容时需考虑的不同选项。 以 XML 数据形式编写 DataSet:讨论如何以 XML 数据的形式生成 DataSet 的内容以及可使用的不同 XML 格式选项。 从 XML 中加载 DataSet 架构信息:讨论用于从 XML 中加载 DataSet 架构的 DataSet 方法。 以 XML 架构 (XSD) 形式编写 DataSet 架构信息:讨论 XML 架构的用途以及如何从 DataSet 生成 XML 架构。 使 DataSet 与 XmlDataDocument 同步:讨论同步访问单个数据集的关系和分层视图的 .NET 框架中的可用功能,并解释如何在 DataSet 和 XmlDataDocument 之间创建同步关系。 嵌套的 DataRelation:讨论嵌套 DataRelation 对象在以 XML 数据形式表示 DataSet 内容时的重要性,并描述如何创建这些对象。 从 XML 架构 (XSD) 生成 DataSet 关系结构:描述从 XML 架构定义语言 (XSD) 架构创建的 DataSet 的关系结构(即架构)。 将 XML 架构 (XSD) 约束映射到 DataSet 约束:描述用于在 DataSet 中创建唯一和外键约束的 XML 架构元素。 从 XML 架构 (XSD) 生成 DataSet 关系:描述用于在 DataSet 中各表列间创建关系的 XML 架构元素。 了解约束和关系之间的相互关系:描述当使用 XML 架构元素在 DataSet 中创建约束时如何隐式地创建关系。   从 XML 推断 DataSet 关系结构:描述在从 XML 元素进行推断时所创建的 DataSet 的结果关系结构(即架构)。   创建和使用数据表:描述如何创建和自定义 DataTable 对象。 创建数据表:说明如何创建 DataTable 并将其添至 DataSet。 定义数据表的架构:提供有关创建和使用 DataColumn 对象和约束的信息。 在数据表中操作数据:说明如何添加、修改和删除表中的数据。说明如何使用 DataTable 事件来检查对表中数据的更改。   创建和使用 DataView:描述如何创建 DataTable 中数据的动态视图,这些视图通常用于数据绑定应用程序。 创建 DataView:描述如何为 DataTable 创建 DataView。 使用 DataView 对数据排序和筛选:描述如何设置 DataView 的属性,以按照特定筛选条件返回数据行的子集或以特定排序顺序返回数据。 使用 DataView 查看数据:描述如何访问 DataView 的内容,在 DataView 中查找特定的数据行,以及基于父子关系创建数据的视图。 使用 DataView 修改数据:描述如何通过 DataView 修改基础 DataTable 中的数据(包括启用或禁用更新)。 使用 DataView 事件:描述如何使用 ListChanged 事件接收在 DataView 的内容或顺序得到更新时发出的通知。 使用 DataViewManager 设置默认表视图:描述如何使用 DataViewManager 来管理 DataSet 中每个表的 DataView 设置。   从 ADO.NET 访问 ADO 记录集或记录:描述如何使用 OleDbDataAdapter 从 ADO 记录或记录集填充 DataSet。 ADO.NET 方案示例:提供数据识别应用程序的常见编程方案的示例,并使用 ADO.NET 提供这些方案的解决方案。 检索“标识”或“自动编号”值:提供一个特定示例,它将为 Microsoft SQL Server 表中的“标识”(Identity) 字段所生成的值以及 Microsoft Access 表中的“自动编号”(Autonumber) 字段映射到表中插入行的列。 开放式并发:描述开放式并发模型,并提供有关如何使用 ADO.NET 测试是否存在开放式并发冲突的示例。 从 XML Web services 使用 DataSet:提供一个 XML Web services 的示例,该示例以 DataSet 的形式返回数据源中的数据,另外还接收更新的 DataSet 并将更改解析回数据源。 查询结果分页:提供有关以数据页的形式查看查询结果的示例。   实现 .NET 数据提供程序:描述如何为数据存储区创建自定义 .NET 数据提供程序,并为您提供模板代码。 .NET 数据提供程序实现入门:为定义 .NET 数据提供程序提供信息和建议,其中包括有关可用于实现的接口的说明和有关为提供程序创建命名空间的信息。 实现连接:描述连接的特性,并说明如何为 .NET 数据提供程序实现您自己的连接。 实现命令:描述命令的特性,并说明如何为 .NET 数据提供程序实现您自己的命令。 实现 DataReader:描述 DataReader 的特性,并说明如何为 .NET 数据提供程序实现您自己的 DataReader。 实现 DataAdapter:描述 DataAdapter 的特性,并说明如何为 .NET 数据提供程序实现您自己的 DataAdapter。 示例 .NET 数据提供程序:包含 .NET 数据提供程序的示例实现。   数据集 数据集介绍:提供什么是 ADO.NET 数据集、如何对它们进行类型化或非类型化、它们的用途及结构的概述。 用于创建数据集的 Visual Studio 工具:描述 Visual Studio 提供了哪些允许创建数据集的功能,以及在何时选用什么样的工具。 用组件设计器创建类型化数据集:描述在窗体或组件中工作时如何创建数据集。 用表达式创建数据集列:描述如何在数据集表中定义基于计算或其他表达式(而不是直接基于数据源中的数据)的列。 将表添加到现有数据集:描述如何在以前创建的类型化数据集中创建新数据表。 将现有类型化数据集添加到窗体或组件:描述如何在窗体或组件上创建数据集的实例。 将非类型化数据集添加到窗体或组件:描述如何创建无关联架构的数据集。 演练:将数据源表映射到数据集表:描述如何基于另一个架构,使用数据适配器表和列映射从数据库将数据加载到数据集。 数据适配器 数据适配器介绍:提供有关数据适配器的定义、用途和结构的概述。 数据适配器命令中的参数:描述适配器在运行时传递给 SQL 语句或存储过程的参数的结构和用途。 数据适配器中的表映射:描述如何在源表和数据集表之间映射列名的选项。 创建数据适配器:列出在 Visual Studio 中创建数据适配器的各种方法。 为数据适配器配置参数:解释如何创建将在运行时传递给数据适配器命令的参数并设置其属性。 将数据源列映射到数据集数据表列:提供有关如何建立和修改源表和数据集表的列名之间映射的说明。 预览数据适配器的结果:提供有关测试数据适配器填充数据集的方式的说明。 数据连接 与 ADO 的早期版本和其他数据访问组件相比,ADO.NET 提供了若干好处。这些好处分成以下几个类别: 互操作性 ADO.NET 应用程序可以利用 XML 的灵活性和广泛接受性。由于 XML 是用于在网络中传输数据集的格式,因此可以读取 XML 格式的任何组件都可以处理数据。实际上,接收组件根本不必是 ADO.NET 组件:传输组件可以只是将数据集传输给其目标,而不考虑接收组件的实现方式。目标组件可以是 Visual Studio 应用程序或无论用什么工具实现的其他任何应用程序。唯一的要求是接收组件能够读取 XML。作为一项工业标准,XML 正是在谨记这种互操作性的情况下设计的。 可维护性 在已部署系统的生存期中,适度的更改是可能的,但由于十分困难,所以很少尝试进行实质的结构更改。这是很遗憾的,因为在事件的自然过程中,这种实质上的更改会变得很有必要。例如,当已部署的应用程序越来越受用户欢迎时,增加的性能负荷可能需要进行结构更改。随着已部署的应用程序服务器上的性能负荷的增长,系统资源会变得不足,并且响应时间或吞吐量会受到影响。面对该问题,软件设计者可以选择将服务器的业务逻辑处理和用户界面处理划分到单独计算机上的单独层上。实际上,应用程序服务器层将替换为两层,缓解了系统资源缺乏。 该问题并不是要设计三层应用程序。相反,它是要在应用程序部署以后增加层数。如果原始应用程序使用数据集以 ADO.NET 实现,则该转换很容易进行。请记住,当用两层替换单个层时,将安排这两层交换信息。由于这些层可以通过 XML 格式的数据集传输数据,所以通讯相对较容易。 可编程性 Visual Studio 中的 ADO.NET 数据组件以不同方式封装数据访问功能,帮助您加快编程速度并减少犯错几率。例如,数据命令提取生成和执行 SQL 语句或存储过程的任务。 同样,由这些工具生成的 ADO.NET 数据类导致类型化数据集。这又使您可以通过已声明类型的编程访问数据。例如,请考虑下面这行代码(它访问未声明类型的数据集内的数据成员): ' Visual Basic If TotalCost > DataSet1.Tables("Customers").Rows(i)("AvailableCredit") Then // C# if (TotalCost > DataSet1.Tables["Customers"].Rows[i]["AvailableCredit"]) { } 访问已声明类型的数据集内的数据成员的等效代码行如下所示: ' Visual Basic If TotalCost > DataSet1.Customers("Jones").AvailableCredit Then // C# if(TotalCost > DataSet1.Customers("Jones").AvailableCredit) { } 已声明类型的数据集的代码更易阅读。因为提供了语句结束,所以它还便于编写。例如,“AvailableCredit”在完成以下语句的选择列表中: IF TotalCost > Customer. 最后,已声明类型的数据集的代码更安全,原因在于它提供对类型的编译时检查。例如,假定 AvailableCredit 表达为货币值。如果程序员误向 AvailableCredit 分配了字符串值,则环境会在编译时向程序员报告该错误。当使用未声明类型的数据集时,程序员直到运行时才会知道该错误。 有关类型化数据集和非类型化数据集的更多信息,请参阅数据集介绍。 性能 对于不连接的应用程序,ADO.NET 数据库提供的性能优于 ADO 不连接的记录集。当使用 COM 封送在层间传输不连接的记录集时,会因将记录集内的值转换为 COM 可识别的数据类型而导致显著的处理开销。在 ADO.NET 中,这种数据类型转换则没有必要。 可伸缩性 因为 Web 可以极大增加对数据的需求,所以可缩放性变得很关键。Internet 应用程序具有无限的潜在用户供应。尽管应用程序可以很好地为十几个用户服务,但它可能不能向成百上千个(或几百万个)用户提供同样好的服务。使用数据库锁和数据库连接之类资源的应用程序不能很好地为大量用户服务,因为用户对这些有限资源的需求最终将超出其供应。 ADO.NET 通过鼓励程序员节省有限资源来实现可缩放性。由于所有 ADO.NET 应用程序都使用对数据的不连接访问,因此它不会在较长持续时间内保留数据库锁或活动数据库连接。

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧