Connection:提供连接数据库的详细信息。
Command:提供要运行的命令和详细信息。
DataAdapter:管理命令,提取和更新数据。
DataSet:提供数据的存储空间。
DataReader:提供数据的快速只读访问。
ADO.NET类包含在不同的命名空间中:
System.Data:包含所有数据库共有的基本数据对象(如DataSet)。
System.Data.OLEDB包含用于通过OLEDB与数据库通信的对象(如Access、Dbase)。
System.Data.SqlClient:提供用于与SQL Server通信的对象。
DataReader 对象是查询数据库返回的一个关联的、只进的只读数据流。执行查询时,第一行返回到 DataReader 中。数据流保持到数据库的连接,然后返回下一条记录。DataReader 从数据库中读取行数据时,每行的列值都被读取和计算,但是不能被编辑。
DataReader 的主要属性和方法:
○ FieldCount 属性: 显示当前操作记录的字段总合。
○ Close 方法: 判断 DataReader 对象是否已经关闭。
○ GetString 方法: 以 String 类型返回指定类中的值。
○ GetValue 方法: 以自身的类型返回之死那个列中的值。
○ GetValues 方法: 返回当前记录所有字段的集合。
○ Read 方法: 将“光标”指向 DataReader 对象的下一记录。
Command常用属性:
1.
|
CommandText
属性
—
包含
SQL
命令或存储过程名
| |
2.
|
CommandType
属性
—
表示要运行的命令类型,可以是
CommandType
枚举值:
| |
StoredProcedure
|
表示要运行存储过程
| |
TableDirect
|
表示返回表的所有内容。在这种情况下,
CommandText
属性应包含表名。这个值只能用于
OleDb
连接
| |
Text
|
表示
SQL
文本命令。这是默认值
| |
3.
|
Connection
—
用于连接数据库的
Connection
对象。
| |
4
.
|
Parameters —
集合或
Parameters
对象,用于在命令中传入传出信息
|
Command 对象提供了一些不同的 Execute 方法来启动存储过程,执行查询或者执行非查询语句,例如更新或插入:
1.
|
ExecuteReader
()
方法
—
将数据作
为
一个
DataReader
对
象返回。用于任何返回数据的
SQL
查询
。
|
2.
|
ExecuteScalar
()
方法
—
返回
单
独
值
,例如与特定
查询
相匹配的
记录
数,或者数据
库
功能
调
用的
结
果。
|
3.
|
ExecuteNonQuery
()
方法
—
执
行命令
,但不返回任何数据
。
用于执行动作,但不需要返回指的命令,例如
存
储过
程、插入和更新
数据
。
|
DataAdapter :
Fill方法:
将数据源中的数据导入DataSet中,并且可以设置其中的表名。
Fill(DataSetName):只有一个DataSetName参数。导入到DataSet中的表为一个表。表名默认为Table;
Fill(DataSetName,TableName): 可以导入多个表,并为各个表重新命名。
Fill(DataSetName,StartRow,RowsCount,TableName):导入数据源的一部分数据,并非整个表。表示将数据源中从StartRow位置取出RowsCount条记录导入DataSet。
CommandBuilder对象
SqlDataAdapter不会自动生成实现DataSet的更改与关联的SQL Server实例之间的协调所需的Transact—SQL语句。但是如果设置了SqlDataAdapter的SelectCommand属性,则可以创建一个SqlCommandBuilder对象来自动生成用于单表更新的Transact-SQL语句。然后,SqlCommandBuilder将生成其它任何未设置的Transact-SQL语句。 SelectCommand还必须至少返回一个主键列或唯一的列。如果什么都没有返回,就会产生InvalidOperation异常,不生成命令。
DataAdapter对象在数据发生改变时,并不能自动产生数据库系统所需的Transact-SQL语句,如果不使用CommandBuilder而使用Update方法,这时更新数据库的操作是不会实现的。因为CommandBuilder对象能为单个表的数据改变自动产生Transact-SQL语句,从而使Update()方法得以实现。
DataTable
当访问 DataTable 对象时,注意它们是按条件区分大小写的。如果其中有两个表出大小写以外字母完全相同,则区分大小写,如果不存在相同的字母的两个命名则不区分大小写。