治愈白癜风需要多少钱 http://www.kstejiao.com/.NET开发-ADO.NET1.概述在ADO.NET中,SqlDataReader对象只允许以只读、顺向流的方式查看其中所存储的数据,提供一个非常有效率的数据查看模式,同时SqlDataReader对象还是一种非常节省资源的数据对象。SqlDataReader对象可通过SqlCommand对象的ExecuteReader方法从数据源中检索数据来创建。SqlDataReader对象也称为读取器对象。2.SqlDataReader的常用属性我们知道,在SqlCommand对象上可以使用ExecuteReader()方法从数据库中获取大量的数据,并将这些数据存储在了SqlSqlDataReader对象中。那么在SqlSqlDataReader中有一些常用的属性和方法可以使用。2.1.HasRows属性如果SqlSqlDataReader包含一行或多行数据,则HasRows为true,否则HasRows为false。也就是使用HasRows属性来判断是否从数据库返回数据了。如下C#代码:stringconnStr=DataSource=.;InitialCatalog=bw_testdb;IntegratedSecurity=True;SqlConnectionconn=newSqlConnection(connStr);//打开连接conn.Open();//sql语句stringsql=select*fromBW_Student;//创建命令对象SqlCommandcmd=newSqlCommand(sql,conn);//返回大量数据SqlSqlDataReadersdr=cmd.ExecuteReader();//判断sdr对象中是否存在数据boolb=sdr.HasRows;//关闭数据流SqlSqlDataReadersdr.Close();//关闭数据库conn.Close();在此C#代码中,使用HasRows属性判断SqlSqlDataReader对象中是否存在数据,从而判断下一步的操作。2.2.FieldCount属性ADO.NET中,使用SqlSqlDataReader对象的FieldCount属性可以获取从数据库返回的列数。如果没有返回任何数据,即HasRows=false,则FieldCount也会返回正常的列数。因为数据表中的字段肯定是存在的,不管有没有数据。C#代码如下:stringconnStr=DataSource=.;InitialCatalog=bw_testdb;IntegratedSecurity=True;SqlConnectionconn=newSqlConnection(connStr);//打开连接conn.Open();//sql语句stringsql=select*fromBW_StudentwhereId=;//创建命令对象SqlCommandcmd=newSqlCommand(sql,conn);//返回大量数据SqlSqlDataReadersdr=cmd.ExecuteReader();//判断sdr对象中是否存在数据boolb=sdr.HasRows;//获取返回的列数intfieldCount=sdr.FieldCount;//关闭数据流SqlSqlDataReadersdr.Close();//关闭数据库conn.Close();通过FieldCount属性,就能获取SQLServer数据库某数据表字段的数量。3.SqlDataReader的常用方法3.1.Read()方法在C#代码中,可以使用ADO.NET中的SqlSqlDataReader对象的Read()方法结合while、do…while、if获取SqlSqlDataReader对象中的每行数据。如果要获取SqlSqlDataReader对象中的所有行数据,使用while循环是最方便的方法。如下C#代码:stringconnStr=DataSource=.;InitialCatalog=bw_testdb;IntegratedSecurity=True;SqlConnectionconn=newSqlConnection(connStr);//打开连接conn.Open();//sql语句stringsql=select*fromBW_Student;//创建命令对象SqlCommandcmd=newSqlCommand(sql,conn);//返回大量数据SqlSqlDataReadersdr=cmd.ExecuteReader();//判断sdr对象中是否存在数据boolb=sdr.HasRows;//获取返回的列数intfieldCount=sdr.FieldCount;while(sdr.Read()){Response.Write(姓名是:+sdr[1].ToString()+br/);}//关闭数据流SqlSqlDataReadersdr.Close();//关闭数据库conn.Close();此C#代码运行,查看一下SQLServer数据库中的数据:SqlSqlDataReader获取指定列值在图1中,使用SqlSqlDataReader索引器根据下标值,就可以得到每行中某列的数据。3.2.Close()方法在ADO.NET中,SqlSqlDataReader对象也有Close()方法,在使用完SqlSqlDataReader之后,必须使用Close()方法关闭数据流(或关闭读取器对象)。如下C#代码:stringconnStr=DataSource=.;InitialCatalog=bw_testdb;IntegratedSecurity=True;SqlConnectionconn=newSqlConnection(connStr);//打开连接conn.Open();//sql语句stringsql=select*fromBW_Student;//创建命令对象SqlCommandcmd=newSqlCommand(sql,conn);//返回大量数据SqlSqlDataReadersdr=cmd.ExecuteReader();//判断sdr对象中是否存在数据boolb=sdr.HasRows;//获取返回的列数intfieldCount=sdr.FieldCount;while(sdr.Read()){Response.Write(姓名是:+sdr[1].ToString()+br/);}//关闭数据流SqlSqlDataReadersdr.Close();//关闭数据库conn.Close();运行此C#代码,如下图所示:SqlSqlDataReader获取数据在图2中,已经将SQLServer表中的数据通过ADO.NET技术呈现在aspx页面上了。3.3.GetString()方法我们在使用Read()方法获取SqlSqlDataReader对象中的数据时,是直接使用列的下标值来获取的,如:sdr[1].ToString()。现在,还可以使用类似于GetString(下标值)、GetInt(下标值)、GetDouble(下标值)等方法来获取数据。下标值是int类型。如下C#代码:stringconnStr=DataSource=.;InitialCatalog=bw_testdb;IntegratedSecurity=True;SqlConnectionconn=newSqlConnection(connStr);//打开连接conn.Open();//sql语句stringsql=select*fromBW_Student;//创建命令对象SqlCommandcmd=newSqlCommand(sql,conn);//返回大量数据SqlSqlDataReadersdr=cmd.ExecuteReader();//判断sdr对象中是否存在数据boolb=sdr.HasRows;//获取返回的列数intfieldCount=sdr.FieldCount;while(sdr.Read()){//Response.Write(姓名是:+sdr[1].ToString()+br/);Response.Write(姓名是:+sdr.GetSqlString(1)+,年龄是:+sdr.GetInt32(2).ToString()+br/);}//关闭数据流SqlSqlDataReadersdr.Close();//关闭数据库conn.Close();运行结果如下:SqlSqlDataReader获取多行值在图3中,获取了更多字段的数据。4.SqlDataReader绑定到GridView当在开发的.NET项目中只需要将数据库中的数据显示出来,不做任何的操作,则使用SqlDataReader可以高效的快速从数据库获取数据,并且SqlDataReader支持与GridView控件的绑定。如下C#代码:stringconnStr=DataSource=.;InitialCatalog=bw_testdb;IntegratedSecurity=True;SqlConnectionconn=newSqlConnection(connStr);//打开连接conn.Open();//sql语句stringsql=select*fromBW_Student;//创建命令对象SqlCommandcmd=newSqlCommand(sql,conn);//返回大量数据SqlSqlDataReadersdr=cmd.ExecuteReader();GridView1.DataSource=sdr;GridView1.DataBind();//关闭数据流SqlSqlDataReadersdr.Close();//关闭数据库conn.Close();在此代码中,将获取的数据绑定到WebForm应用程序中的GridView控件中。运行结果如下:SqlSqlDataReader读取数据另外,借于GridView控件的强大,还可以对列名进行修改。设置GridView头部标题在图5中修改表格头部的标题:GridView显示标题在图6中,第一列的字段名变成了中文,可以依次全部将表头的字段名修改为中文,且还可以设置表格的高度和宽度,以及隔行变色等功能。在.NET应用程序中,使用ADO.NET从SQLServer数据库中获取数据速度是最快的,再加上使用SqlDataReader对象以流的方式获取数据,其速度无疑是最快的。SQLServer从入门到精通(第2版)(配光盘)(软件开发视频大讲堂)京东¥69购买已下架
转载请注明:http://www.abachildren.com/ysty/8857.html