笔记内容全部来自《C# Web应用程序入门经典》
1. ADO.NET的体系结构
ADO.NET这个名字并不代表实际的内容——ADO原来是表示ActiveX Data Obejects,而是一种技术的名称。访问数据库最常用的方法是:首先连接到数据库,然后使用SQL语句。对于不同的数据库操作有不同的Command对象方法。如,ExecuteScalar()方法返回一个包含值的对象,ExecuteReader()方法用于访问结果集的DataReader对象,ExecuteNonQuery()返回一个整型值,表示命令所影响的行数。这里提到了DataReader对象,这个对象是一种快速的、只读的、只向前的从数据库返回数据的连接指针。通过ExecuteReader()方法获得该对象之后,调用Read()后,如果返回True就使用它的方法来访问当前位置的数据。结果集包含多个数据行,则通常用下面的代码来访问每一行:
reader = command.ExecuteReader();
while(read.Read())
{
//Process current row
}
而访问当前行中包含在各个列单元中的数据,可以使用如下DataReader下面的方法访问:(1)GetXXX(),用于检索所输入的数值。诸如GetBoolean()、GetString()和GetInt32()的方法可以以参数的形式接收列的索引,并返回正确的值类型。如Response.Write(reader.GetString(0));(其中reader为上面代码的DataReader对象,下同)。当然有时候不知道索引,而知道名称,这个时候可以使用DataReader对象的GetOrdinal()方法,该方法用于接收列的名称并返回列的位置:int pos = reader.GetOrdinal(“CategoryID“);(2)默认的Item属性,通过这个属性可以直接访问列的值,参数则可以是整型的索引值或则String类型的列名,返回值则是object类型的,因此需要将它显示的转换为所需要的数据类型:int id = (int) reader[“UserId”];或者int id = (int) reader[0];(3)GetValues()方法可以将列中的数值填充到数组中。该方法接收到一个object类型的数组,并用当前行中的数据来填充它:object[] values = new object[3]; reader.GetValues(values);在这里可以用DataReader的FieldCount属性来初始化这个数组。刚才的代码表示将当前行的前三列来填充这个数组。