所有的数据提供程序都位于System.Data命名空间内,每种.NET数据提供程序都由4个主要组件组成,它们的功能如下: Connection对象:用于连接到数据源。 Command对象:用于执行针对数据源的命令并检索DataReader、Dataset,或者用于执行针对数据源的一个插人、删除或修改操作。 DataReader对象:通过一个打开的数据库连接,能够快速、前向、只读地访问数据流,每次在内存中只处理一行数据。 DataAdapter对象:用于从数据源产生上个Dataset,并且更新数据源。
数据库应用程序的开发流程: 虽然数据库应用程序访问的数据库不同,实现的功能也不同,但其开发流程一般主要分为以下几个步骤: 第1步:创建数据库。 第2步:使用Connection对象连接数据库。 第3步:使用Command对象对数据源执行SQL命令并返回数据。 第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语句,也可以使用存储过程。
SqlCommand对象的主要方法有:a.ExecuteNonQuery方法ExecuteNonQuery方法执行更新操作,如与update、delete和insert语句有关的操作,在这些情况下,返回值是命令影响的行数。使用ExecuteNOnQuery方法的代码如下:SqlConnection Con=new SqlConnection();Con.Connectionstring=”连接宇符”;SqlCommand Com=new SqlCommand();Com.Connection=Con;Corn.CommandText=”数据更新命令”;Con.Open();Com.ExecuteNonQuery();//执行 Command命令Con. Close();b.ExecuteReader方法ExecuteReader方法通常与查询命令一起使用,并且返回一个数据读取器对象SqlDataReader类的一个实例。如果通过ExecuteReader方法执行一个更新语句,则该命令成功执行,但是不会返回任何受影响的数据行。使用ExecuteReader方法的代码如下:SqlConnection Con=new SqlConnection();Con.Connectionstring=”连接宇符”;SqlCommand Com=new SqlCommand();Com.Connection=Con;Corn.CommandText=”查询语句”;Con.Open();SqlDataReader SqlReader=Com.ExecuteReader();While(SqlReader.Read()){ Response.Write(SqlReader[0]); //输出第一个字段的内容}c.ExecuteScalar方法如果只想检索数据库信息中的一个值,而不需要返回表或数据流形式的数据,那么Command对象的Executescalar方法就很有用了。例如只需要返回count(*)、avg(价格)、Sum(数量)等聚合函数的结果就可以使用此方法。如果在一个常规查询语句中调用该方法,则只读取第1行第1列的值,其他值将丢弃。使用Executescalar方法的代码如下:SqlConnection Con=new SqlConnection();Con.Connectionstring=”server=.\\sql2005; database=网上书店; integrated security=sspi”;SqlCommand Com=new SqlCommand();Com.Connection=Con;Corn.CommandText=”select avg(价格) from图书表”;Con.Open();Response.Write(Com.ExectueScalar()); //输出图书的平均价格例:使用SqlCommand对象更新数据库数据。
- 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对象为例,介绍数据读取器的应用。
2、DataAdapterDataAdapter对象(数据适配器对象)是一种用来充当数据集与实际数据源之间的桥梁的对象。使用数据适配器在应用程序和数据库之间通信,数据适配器可以将数据从数据库读入数据集,也可以将数据集中已更改的数据写回数据库。3、DataSet
Dataset(数据集对象)是数据库数据的内存驻留表示形式,无论数据源是什么,都会提供一致的关系编程模型。它可以用于多种不同的数据源:用于XML数据,或用于管理应用程序本地的数据。一个Dataset对象表示包括相关表、约束和表间关系在内的整个数据集。Dataset对象是支持ADO.NET的断开式或分布式数据方案的核心对象。要取得字段名称,只需要用Columns(索引值)即可完成,但是使用Row(索引值)取得的并非是该条记录内的所有字段内容,此时需要再搭配Item(索引值)来取得指定字段的内容。此外Item属性除了可使用索引值的方式外,还可使用直接指定字段名称的方式。Dataset对象是数据缓存,与数据源并不相连,但却具有和数据源完全类似的结构。它虽然和数据源很类似,但Dataset对象并不直接与数据源交互。因此,对于任何类型的数据源,Dataset都保持统一的编程模型。这样做的另一个好处是在对数据源的数据做更新之前,可以在Dataset中先验证更新数据的合理性,随后再使用DataAdapter对象更新数据源中的数据。Dataset对象有很多XML的特性,包括可以输人、输出、处理XML数据和XML视图。
数据更新1、使用SQL命令更新数据
使用SQL语句可以新增数据、修改数据和删除数据,这里以网上书店数据库中的会员表为例来介绍使用SQL命令更新数据的方法。
1)使用SQL命令新增数据
使用SQL命令新增数据也就是使用insert命令语句来完成数据的新增3)使用SQL命令删除数据
使用SQL命令删除数据也就是使用delete命令语句来完成数据的删除2、利用数据集Dataset更新数据
利用数据集更新数据就是首先将要操作的数据调入到Dataset中,然后通过SqlDataAdapter对象和SqlCommandBulider对象的相应方法来完成相应的操作,但它们的使用离不开DaaTable对象和DataRow对象。
1)DataTable对象
DataTable表示一个内存中的数据表,可以独立创建和使用,也可以由其他.NET Framework对象使用,最常见的情况是作为Dataset的成员使用。可以使用相应的DataTable构造函数刨建DataTable对象。可以通过使用Add方法将其添加到DataTable对象的Tables集合中,将其添加到Dataset中2)DataRow对象DataRow表示DataTable中的一行数据。3)利用Dataset新增数据
如果想向数据集中加一个数据行,可以调用数据表的NewRow()方法来添加一个新的数据行。
4)利用Dataset修改数据
利用DataTable对象的Rows属性来修改数据行数据。
5)利用Dataset删除数据
利用Dataset删除数据就是利用DataRow对象的Delete方法删除数据集中的行,并利用DataTable对象的AcceptChanges方法删除数据库中的数据,从而达到删除数据的目的。
--------------------------------------------------- 2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------