资源描述
第八章数据库应用,大多数应用程序都需要和数据库交互。同其他.NET开发语言一样,在C#语言中对数据库的访问是通过.NET框架中的ADO.NET来实现的。ADO.NET是重要的应用程序级接口,用于在Microsoft.NET平台上提供数据访问服务,本章将详细介绍ADO.NET的原理与结构,以及在C#应用程序中如何使用ADO.NET。,一、数据库概述,数据库是指以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。关系数据库是以关系模型来组织的。关系模型中数据的逻辑结构是一张二维表,它由行和列组成。例如,表8.1是在“学生信息管理系统”中使用的一个Students表,用来描述学生的属性。,二、ADO.NET概述,1、ADO.NET基本概念与特点ADO.NET比现有API在技术上高出很多。它与ADO仅仅是名称类似,类和访问数据的方法则完全不同。ADO.NET是微软新一代.NET数据库的存取结构,提供访问数据库系统的API。ADO.NET是基于.NET构架的ActiveDataObjects(ADO)的扩充,主要提供一个面向对象的数据存取架构,用来开发数据库应用程序。是目前开发数据库应用程序的主要接口。,2、ADO.NET是应用程序和数据源之间沟通的桥梁。通过ADO.NET提供的对象,再配合SQL语法,就可以存取数据库内的数据了,而且凡是通过ODBC或OLEDB接口所能存取的数据库(如:Database、FoxPro、Excel、Access、SQLServer、Oracle等),都可通过ADO.NET对象来存取。,三、ADO.NET模型,1、ADO.NET架构的组成.NET数据提供程序(.NETDataProvider)DataSet对象1)DataSet对象(1)什么是DataSetDataSet(数据集)是ADO.NET数据存取结构中的核心对象,它是一个内存数据库。(2)DataSet中有什么DataSet内部存放了一个或多个不同的数据表(DataTable)对象。这些数据表是由数据记录和数据字段组成的,并包含主键、外键、数据表之间的关联(Relation)信息以及数据格式的条件限制(Constraint),三、ADO.NET模型,(3)DataSet可实现的功能DataSet提供方法对数据集中表数据进行浏览、编辑、排序、过滤或建立视图(View)。(4)DataSet如何和数据库进行数据交换,三、ADO.NET模型,2).NET数据提供程序(.NETDataProvider)(1)什么是.NET数据提供程序.NET为每一种数据源提供了一组包含四个对象的数据组件。每一组对象都是针对特定的数据源,这就是所谓的“数据提供程序”(.NETDataProvider)(2)数据提供程序分类SQLServer.NETFramework数据提供程序(访问SQLServer7.0以上数据库)OLEDB.NETFramework数据提供程序(访问OLE数据源或SQLServer6.5或更前的版本)ODBC.NETFramework数据提供程序Oracle.NETFramework数据提供程序,三、ADO.NET模型,(3)四个数据库客户命名空间usingSystem.Data.OleDb;usingSystem.Data.SqlClient;usingSystem.Data.Odbc;usingSystem.Data.OracleClient;,三、ADO.NET模型,(4)ADO.NET模型,三、ADO.NET模型,(5)访问数据源的四个常用组件,四、连接数据库,1、Connection对象Connection对象负责建立和管理与底层数据源的连接。通过Connection对象可以完成以下工作:建立数据库连接、查看数据库连接状态、断开数据库连接等操作2、Connection对象的分类SqlConnection对象(连接SQL7.0以上版本数据源)OleDbConnection对象(连接OLEDB数据源)OdbcConnection对象OracleConnection对象3、使用SqlConnection和OleDbConnection对象连接数据库创建SqlConnection对象SqlConnectionconn=newSqlConnection(connStr);创建OleDbConnection对象OleDbConnectionconn=newOleDbConnection(connStr);,四、连接数据库,4、Connection对象的主要属性ConnectionString属性通常包括以下参数:1)连接SQL7.0以上版本的SQL数据库,ConnectionString属性通常包括以下参数:DataSource(Server):设置需连接的数据库服务器名。InitialCatalog(database):设置连接的数据库名称。IntegratedSecurity:服务器的安全性设置,是否使用信任连接。WorkstationId:数据库客户端标识。PacketSize:获取与SQLServer通信的网络数据包的大小,单位为字节。UserID(Uid):登录SQLServer的帐号。Password(Pwd):登录SQLServer的密码。ConnectionTimeout:设置SqlConnection对象连接SQL数据库服务器的超时时间。注:各参数之间以“;”分隔。2)连接OLEDB数据源,ConnectionString属性通常包括以下参数:Provider:设置数据源的OLEDB驱动程序。DataSource:设置数据源的实际路径。Password:设置登录数据库时所使用的密码。UserID:设置登录数据库时所使用的帐号。,四、连接数据库,四、连接数据库,5、Connection对象的主要方法,四、连接数据库,例:打开与SQL数据库XSCJ的连接usingSystem.Data.OleDb;privatevoidbutton1_Click(objectsender,System.EventArgse)SqlConnectionconn=newSqlConnection();conn.ConnectionString=DataSource=(local);initialcatalog=XSCJ;Uid=sa;Password=;tryconn.Open();MessageBox.Show(连接成功!,提示);catchMessageBox.Show(连接错误!,提示);finallyconn.Close();,五、使用Command对象,1、Command对象简介Command对象根据程序员所设置的SQL语句对数据库进行操作。作为数据提供程序的一部分,Command对象对应着特定的数据源:如System.Data.OleDb命名空间中的OleDbCommand,以及System.Data.SqlClient命名空间中的SqlCommand。,五、使用Command对象,2、Command对象的建立创建SqlCommand对象SqlCommandcmd=newSqlCommand();创建OleDbCommand对象OleDbCommandcmd=newOleDbCommand();,五、使用Command对象,3、Command对象的属性Command对象较为重要的几个属性。(1)CommandText属性是字符串属性,包含要执行的SQL语句或数据源中存储过程的名字;(2)Connection属性指定要执行数据命令的连接对象,即指定要执行数据操作的数据源;(3)Transaction属性指定执行数据命令登记的事务对象。,五、使用Command对象,4、执行命令的相关方法,五、使用Command对象,例:删除XS表中“李明”同学的资料privatevoidbutton1_Click(objectsender,System.EventArgse)SqlConnectionconn=newSqlConnection();conn.ConnectionString=DataSource=(local);InitialCatalog=XSCJ;Uid=sa;Password=;conn.Open();SqlCommandcmd=newSqlCommand(deletefromXSwherexm=李明,conn);cmd.ExecuteNonQuery();MessageBox.Show(删除成功!);conn.Close();,六、使用DataReader对象,1、DataReader对象DataReader对象是用来访问数据的简单方式,只能读取数据,不能写入数据,并且只能顺序读取数据,即将数据表中的行从头到尾依次顺序读出。DataReader被创建时,记录指针在表的最前端,可使用Read()方法每次从表中读出一条记录。,六、使用DataReader对象,2、DataReader对象的属性,六、使用DataReader对象,3、DataReader对象的方法,六、使用DataReader对象,4、使用DataReader对象访问数据的步骤使用Connection对象创建数据连接。使用Command对象的ExecuteReader()方法执行SQL查询或存储过程,创建DataReader对象。成功创建该对象后,可使用其属性和方法访问数据。,六、使用DataReader对象,例:使用SqlDataReader读取XS表中学号和姓名privatevoidbutton1_Click(objectsender,System.EventArgse)SqlConnectionconn=newSqlConnection();conn.ConnectionString=DataSource=(local);InitialCatalog=XSCJ;Uid=sa;Password=;conn.Open();SqlCommandcmd=newSqlCommand(select*fromXS,conn);SqlDataReaderreadxs=cmd.ExecuteReader();while(readxs.Read()listBox1.Items.Add(readxsXH+readxsXM);MessageBox.Show(读取完毕!,提示);conn.Close();,ADO.NET模型,七、使用DataAdapter对象与DataSet对象,1、什么是DataAdapter对象DataAdapter对象是用来传递各种SQL命令,并将命令执行结果填入DataSet对象。并且DataAdapter对象还可以将数据集(DataSet)对象更改过的数据写回数据源。它是数据库与DataSet对象之间沟通的桥梁,通过数据集访问数据库是ADO.NET模型的主要方式创建SqlDataAdapter对象SqlDataAdapter对象名=newSqlDataAdapter(SQL命令,连接名);创建OleDbDataAdapter对象OleDbDataAdapter对象名=newOleDbDataAdapter(SQL命令,连接名);例:SqlDataAdapterda=newSqlDataAdapter(“select*fromXS”,conn);,七、使用DataAdapter对象与DataSet对象,2、DataSet对象1)什么是DataSet对象DataSet对象是一个内存数据库。DataSet对象中可以包含多个数据表,在程序中动态地产生数据表,数据表可来自数据库、文件、或XML数据。DataSet对象还包括主键、外键和约束等信息。DataSet对象提供方法对数据集中表数据进行浏览、编辑、排序或建立视图。2)建立DataSet对象例:DataSetds=newDataSet();,七、使用DataAdapter对象与DataSet对象,3)DataSet对象模型,七、使用DataAdapter对象与DataSet对象,3、利用DataAdapter对象向DataSet对象传递数据DataAdapter对象提供的方法,例:privatevoidSearchForm_Load(objectsender,System.EventArgse)stringconnStr=DataSource=(local);InitialCataLog=XSCJ;UserID=sa;Password=;string_sql=selectXHas学号,XMas姓名,ZYMas专业,XBas性别,+CSSJas出生日期,ZXFas总学分,BZas备注fromXS;SqlConnectionconn=newSqlConnection(connStr);SqlDataAdaptersda=newSqlDataAdapter(_sql,connStr);DataSetds=newDataSet();sda.Fill(ds);StuDGV.DataSource=ds.Tables0.DefaultView;stuZY.SelectedIndex=0;,DataGridView控件DataGridView控件是一个功能更为强大的数据显示和处理控件,
展开阅读全文