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

黑马程序员之 ASP.NET学习笔记:ADO.NET基础知识总结

2012-11-01 19:56 971 查看
---------------------------------------------------
2345王牌技术员联盟2345王牌技术员联盟、期待与您交流!---------------------------------------------------------

所有的数据提供程序都位于System.Data命名空间内,每种.NET数据提供程序都由4个主要组件组成,它们的功能如下:
[align=left]Connection对象:用于连接到数据源。[/align]
[align=left]Command对象:用于执行针对数据源的命令并检索DataReader、Dataset,或者用于执行针对数据源的一个插人、删除或修改操作。[/align]
[align=left]DataReader对象:通过一个打开的数据库连接,能够快速、前向、只读地访问数据流,每次在内存中只处理一行数据。[/align]
DataAdapter对象:用于从数据源产生上个Dataset,并且更新数据源。

[align=left]数据库应用程序的开发流程:[/align]
虽然数据库应用程序访问的数据库不同,实现的功能也不同,但其开发流程一般主要分为以下几个步骤:
[align=left] 第1步:创建数据库。[/align]
[align=left] 第2步:使用Connection对象连接数据库。[/align]
[align=left] 第3步:使用Command对象对数据源执行SQL命令并返回数据。[/align]
第4步:使用DataReader和Dataset对象读取和处理数据源的数据。

数据库连接对象Connection

该对象是连接SQL Server类型数据源的主要方式,通过相关属性和方法,实现对连接参数的设置、读取以及相关连接操作。

例:使用SqlConnection对象连接SQL Server数据库。

using(SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=H:\第一个mdf\第一个mdf\Database1.mdf;Integrated Security=True;User Instance=True"))

{

conn.Open();

Console.WriteLine("数据库连接成功");



复制代码

执行数据库操作命令对象Command


使用Connection对象成功地创建了数据库连接之后,接下来就可以使用ADO.NET提供的Command对象对数据源执行查询、添加、删除和修改等各种SQL命令了。其操作实现的方式可以使用SQL语句,也可以使用存储过程。

[align=left]SqlCommand对象的主要方法有:[/align]
[align=left]a.ExecuteNonQuery方法[/align]
[align=left]ExecuteNonQuery方法执行更新操作,如与update、delete和insert语句有关的操作,在这些情况下,返回值是命令影响的行数。使用ExecuteNOnQuery方法的代码如下:[/align]
[align=left]SqlConnection Con=new SqlConnection();[/align]
[align=left]Con.Connectionstring=”连接宇符”;[/align]
[align=left]SqlCommand Com=new SqlCommand();[/align]
[align=left]Com.Connection=Con;[/align]
[align=left]Corn.CommandText=”数据更新命令”;[/align]
[align=left]Con.Open();[/align]
[align=left]Com.ExecuteNonQuery();//执行 Command命令[/align]
[align=left]Con. Close();[/align]
[align=left]b.ExecuteReader方法[/align]
[align=left]ExecuteReader方法通常与查询命令一起使用,并且返回一个数据读取器对象SqlDataReader类的一个实例。如果通过ExecuteReader方法执行一个更新语句,则该命令成功执行,但是不会返回任何受影响的数据行。使用ExecuteReader方法的代码如下:[/align]
[align=left]SqlConnection Con=new SqlConnection();[/align]
[align=left]Con.Connectionstring=”连接宇符”;[/align]
[align=left]SqlCommand Com=new SqlCommand();[/align]
[align=left]Com.Connection=Con;[/align]
[align=left]Corn.CommandText=”查询语句”;[/align]
[align=left]Con.Open();[/align]
[align=left]SqlDataReader SqlReader=Com.ExecuteReader();[/align]
[align=left]While(SqlReader.Read())[/align]
[align=left]{[/align]
[align=left] Response.Write(SqlReader[0]); //输出第一个字段的内容[/align]
[align=left]}[/align]
[align=left]c.ExecuteScalar方法[/align]
[align=left]如果只想检索数据库信息中的一个值,而不需要返回表或数据流形式的数据,那么Command对象的Executescalar方法就很有用了。例如只需要返回count(*)、avg(价格)、Sum(数量)等聚合函数的结果就可以使用此方法。如果在一个常规查询语句中调用该方法,则只读取第1行第1列的值,其他值将丢弃。使用Executescalar方法的代码如下:[/align]
[align=left]SqlConnection Con=new SqlConnection();[/align]
[align=left]Con.Connectionstring=”server=.\\sql2005; database=网上书店; integrated security=sspi”;[/align]
[align=left]SqlCommand Com=new SqlCommand();[/align]
[align=left]Com.Connection=Con;[/align]
[align=left]Corn.CommandText=”select avg(价格) from图书表”;[/align]
[align=left]Con.Open();[/align]
[align=left]Response.Write(Com.ExectueScalar()); //输出图书的平均价格[/align]
[align=left]例:使用SqlCommand对象更新数据库数据。[/align]
[align=left] [/align]

Try

{

SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=H:\入学测试\第一个mdf\第一个mdf\Database1.mdf;Integrated Security=True;User Instance=True");

conn.Open();

SqlCommand upcmd = conn.CreateCommand();

upcmd.CommandText = "update User_T set Errortime=0 where Username=@Username";

upcmd.Parameters.Add(new SqlParameter("Username", txtusername.Text));

upcmd.ExecuteNonQuery();

This.Labinfo.Text=”数据修改成功!”;

}

Catch(Exception)

{

This.Labinfo.Text=”数据修改失败,请重试!”;

}

Con.Close();

}

Catch(Exception)

{

This.Labinfo.Text=”数据库连接失败,请重试”;

Con.Close();

}

}

数据查询



在与数据库的交互中,要获得数据访问的结果可用两种方法来实现,第一种是通过DataReader对象从数据源中获取数据并进行处理;第二种是通过Dataset对象将数据存放在内存中进行处理。

1、DataReader(数据读取器)可以顺序地从查询结果集中读取记录,它的特点是单向向前,速度快,占用内存少。使用DataReader对象无论在系统开销还是在性能方面都很有效,它在任何时候只缓存一条记录,并且没有将整个结果集载入内存中,从而避免了使用大量内存,大大提高了系统性能。

DataReader对象最重要的方法就是Read,每次调用Read方法只能读取一条记录,前进到下一条记录,如果读取到记录则返回True,否则返回False。使用GetValues方法获取当前行中的所有属性列,也可以用GetValue方法获取指定序号处的列值。

下面以SqlDataReader对象为例,介绍数据读取器的应用。

[align=left]2、DataAdapter[/align]
[align=left]DataAdapter对象(数据适配器对象)是一种用来充当数据集与实际数据源之间的桥梁的对象。使用数据适配器在应用程序和数据库之间通信,数据适配器可以将数据从数据库读入数据集,也可以将数据集中已更改的数据写回数据库。[/align]
3、DataSet

[align=left]Dataset(数据集对象)是数据库数据的内存驻留表示形式,无论数据源是什么,都会提供一致的关系编程模型。它可以用于多种不同的数据源:用于XML数据,或用于管理应用程序本地的数据。一个Dataset对象表示包括相关表、约束和表间关系在内的整个数据集。Dataset对象是支持ADO.NET的断开式或分布式数据方案的核心对象。[/align]
[align=left]要取得字段名称,只需要用Columns(索引值)即可完成,但是使用Row(索引值)取得的并非是该条记录内的所有字段内容,此时需要再搭配Item(索引值)来取得指定字段的内容。此外Item属性除了可使用索引值的方式外,还可使用直接指定字段名称的方式。[/align]
[align=left]Dataset对象是数据缓存,与数据源并不相连,但却具有和数据源完全类似的结构。它虽然和数据源很类似,但Dataset对象并不直接与数据源交互。因此,对于任何类型的数据源,Dataset都保持统一的编程模型。这样做的另一个好处是在对数据源的数据做更新之前,可以在Dataset中先验证更新数据的合理性,随后再使用DataAdapter对象更新数据源中的数据。Dataset对象有很多XML的特性,包括可以输人、输出、处理XML数据和XML视图。[/align]

[align=left]数据更新[/align]
1、使用SQL命令更新数据

使用SQL语句可以新增数据、修改数据和删除数据,这里以网上书店数据库中的会员表为例来介绍使用SQL命令更新数据的方法。

1)使用SQL命令新增数据

[align=left]使用SQL命令新增数据也就是使用insert命令语句来完成数据的新增[/align]
3)使用SQL命令删除数据

[align=left]使用SQL命令删除数据也就是使用delete命令语句来完成数据的删除[/align]
2、利用数据集Dataset更新数据

利用数据集更新数据就是首先将要操作的数据调入到Dataset中,然后通过SqlDataAdapter对象和SqlCommandBulider对象的相应方法来完成相应的操作,但它们的使用离不开DaaTable对象和DataRow对象。

1)DataTable对象

[align=left]DataTable表示一个内存中的数据表,可以独立创建和使用,也可以由其他.NET Framework对象使用,最常见的情况是作为Dataset的成员使用。可以使用相应的DataTable构造函数刨建DataTable对象。可以通过使用Add方法将其添加到DataTable对象的Tables集合中,将其添加到Dataset中[/align]
[align=left]2)DataRow对象[/align]
[align=left]DataRow表示DataTable中的一行数据。[/align]
3)利用Dataset新增数据

如果想向数据集中加一个数据行,可以调用数据表的NewRow()方法来添加一个新的数据行。

4)利用Dataset修改数据

利用DataTable对象的Rows属性来修改数据行数据。

5)利用Dataset删除数据

利用Dataset删除数据就是利用DataRow对象的Delete方法删除数据集中的行,并利用DataTable对象的AcceptChanges方法删除数据库中的数据,从而达到删除数据的目的。

---------------------------------------------------
2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: