您的位置:首页 > 编程语言 > C#

C# 用DataSet读取数据

2016-04-22 17:26 495 查看
http://edu.cnzz.cn/201304/87167e0c.shtml

6,用DataSet读取数据

DataSet是Ado.Net中的核心对象,所有复杂级别的操作都使用它。DataSet包含一组DataTable对象,他们表示操作的数据库表。DataSet的常见操作使用DataAdapter对象Fill方法给他填充数据为什么Fill方法是DataAdapter对象的方法,而不是DataSet的方法呢,因为DataSet是内存中数据的一个抽象表示,而DataAdapter对象是把DataSet和具体的数据库联系起来的对象,Fill方法有很多重载版本,本例中使用两个参数的,第一个指定要填充的DataSet,第二个参数是DataSet中要包含所加载数据的DataTable名称。DataSet对象有一个Tables属性,他是DataSet中所有DataTable对象的集合。Tabels的类型是DataTableCollection,他有一个重载的索引符,于是可以用两种方式访问每个DataTable

【1】按表名访问:thisDataSet.Tables[“Customers”]

【2】按索引访问:thisDataSet.Tables[0]

每一个DataTable都有一个Rows属性,他是DataRow对象的集合。Rows的类型是DataRowCollection,是一个有序列表,按行号排序。例:myDataSet.Tables[“Customers”].Rows
表示在thisDataSet的DataTable对象Customers中指定行号n-1(索引是基于0的)。当然也可以使用其他索引语法来制定DataTable。我们希望DataRow也有一个DataColumnCollection类型的属性,但是事实并不是那么简单,因为要利用那个每一行各个列中的数据类型,是包含字符数据的列是一个字符串,包含整数的列是一个整数对象等等。DataRow有一个重载的索引,允许按列名和列号访问各个列。

thisDataSet.Table[“Customers”].Rows
[“CompanyName”]

在thisDataSet的DataTable对象Customers中指定行号为n-1的CompanyName列,这里DataRow对象是thisDataSet.Tables[“Customers”].Rows
,上述结构有点混乱,给出了其图形显示。





程序:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Data; //注意

using System.Data.OracleClient; //Oracle数据库

namespace ConsoleApplication4

{

class Program

{

static void Main(string[] args)

{

//Data Source=orcl;User ID=shibei;Password=nsic;Unicode=True

OracleConnection thisConnection = new OracleConnection(@"Data Source=orcl;User ID=shibei;Password=nsic;Unicode=True");

// thisConnection.Open();//此处可以不用打开

OracleDataAdapter thisAdapter = new OracleDataAdapter("select * from N_AIT", thisConnection);

DataSet thisDataSet = new DataSet();

thisAdapter.Fill(thisDataSet, "MY_N_AIT");//MY_N_AIT不是表名而是DataTable对象的名称

foreach (DataRow theRow in thisDataSet.Tables["MY_N_AIT"].Rows)//注意与上面的MY_N_AIT要对上哦

{

Console.WriteLine(theRow["ID"] + "\t" + theRow["NAME"]);//除了用名字也可以用索引号

}

thisConnection.Close();//这个例子中没有明确打开连接,因为DataAdapter对象完成了这个工作,

//数据授权对象会根据需要打开连接,在完成工作后关闭它。

//DataAdapter对象不改变连接的状态,如果DataAdapter对象开始其工作前连接时打开的,

//在DataAdapter对象完成其工作后,连接仍是打开的。( 不懂既然DataAdapter来处理为什么不改变连接的状态)

}

}

}

运行结果同上。

注意:DataReader工作时必须要维护数据库的连接,而且只能向前的方式读取数据,可以浏览记录或跳到某一记录上。而且只能读取记录。而用DataAdapter对象填充了DataSet,DataAdapter对象需要处理连接的打开和关闭。DataSet为数据的读写以及操作不同数据源中的数据提供了极大的灵活性。下面相继介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: