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

(3)C#之ADO.Net 数据集(DataSet)

2015-10-20 09:59 585 查看
DataSet是ADO.Net的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。(来自百度百科)

下面写一段代码来示例DataSet的用法:(下面这段代码是一个按钮的Click事件)

using(SqlConnection conn = new SqlConnection("Data Source=PC201507182002\\SQLEXPRESS;Initial Catalog=123456;Integrated Security=True"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from student where name =@name";
cmd.Parameters.Add(new SqlParameter("@name",textBox1.Text));
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);

DataTable dt = ds.Tables[0];
DataRowCollection rows = dt.Rows;
for (int i = 0; i < rows.Count; i++)
{
DataRow dr = rows[i];
string name = (string)dr[0];
string name1 = (string)dr[1];

MessageBox.Show("name:"+name+"----name1:"+name1);
}

}
}


从SqlDataAdapter开始说起。

◇SqlDataAdapter对象在DataSet与数据之间起着桥接的作用。我们创建一个新的SqlDataAdapter对象da,在创建的同时把cmd传给它。再创建一个DataSet对象ds。

◇然后在da.fill(ds)这一步,就执行了上面的那条select语句,并且把查询结果(一张表)填充到ds中。(ds可以是一个庞大的数据集,可以存放多张表格,每次填充的时候就会在原有的表格数量上加1)。ds保存在内存中。

◇DataTable是个临时保存数据的虚拟表格。接下来创建这个DataTable对象dt,同时把我们刚刚查询到的那张表,也就是ds.Table[0]赋给dt。也就是 DataTable dt = ds.Tables[0]; 这一条语句,其中ds.Table[];中括号里可以有很多种类型的参数,可以是索引型的,也可以是数组型的。

◇在创建DataRowCollection对象rows,并把dt.Rows赋给它。这个rows包含了该表格中所有的行信息。

◇最后创建DataRow对象dr,把rows分为row,也就是逐行的意思,可以通过row[索引|数组];来获取具体的每一个项的values值。

◇注意:这个获取到的值得类型是object类型,需要用(int)row[0];或者(string)row[0];来进行强制类型转换。

总结,其实说白了就是一个逐层细分的过程,首先通过SqlDataAdapter交给DataSet,然后通过DataSet在细化到DataTable,在从DataTable中获取到所有的DataRowCollection,再分给每个DataRow,最后通过DataRow的对象dr定位到该行的某一列项dr[0];从而获得具体的某一项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: