版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 ADO(Active Data Objects)是Microsoft公司开发的用于数据库连接的一套组件模型, 是面向对象的数据访问库,ADO.NET是ADO的升级版本,提供对SQL SEVER等数据源的一致访问。数据使用者可以通过ADO.NET来连接到这些数据源(SQL SERVERACCESSOLE DB等),并检索、操作和更新数据。 ADO.NET主要特点 ADO.NET引入了离线的数据结果集离线的数据结果集(Disconnected DataSet)这个概念,通过使用离线的数据结果集,程序员更可以在数据库断开的情况下访问数据库。 两个组件: .NET Data Provider(数据提
2、供程序) DataSet(数据结果集) ADO.NET的一个核心元素是,能够实现数据操作和对数据的快速访问。包括ConnectionConnection、CommandCommand、DataReaderDataReader和和DataAdapterDataAdapter四大类对象,其中,Connection对象提供与数据源的连接;Command对象使你能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令;DataReader对象从数据源中提供高性能的数据流;DataAdapter对象提供连接DataSet对象和数据源的桥梁。 ADO.NET 是ADO.NET结构的另
3、外一个核心组件, DataSet中包括一个或多个DataTable对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关DataTable对象中数据的关系信息组成。关系图11-1 我们可以用趣味形象化的方式理解ADO.NET对象模型的各个部分,如图所示,可以看出这些对象所处的地位和对象间的逻辑关系。数据库Connection对象Command对象DataAdapterDataset数据库好比水源,存储了大量的数据。Connection好比伸入水中的进水笼头,保持与水的接触,只有它与水进行了“连接”,其他对象才可以抽到水。Command则像抽水机,为抽水提供动力和执行方法,通过“水龙头”
4、,然后把水返给上面的“水管”。DataAdapter、DataReader就像输水管,担任着水的传输任务,并起着桥梁的作用。DataAdapter 像一根输水管,通过发动机,把水从水源输送到水库里进行保存。DataReader 也是一种水管,和DataAdapter不同的是,DataReader不把水输送到水库里面,而是单向地直接把水送到需要水的用户那里或田地里,所以要比在水库中转一下更快更高效。 DataSet则是一个大水库,把抽上来的水按一定关系的池子进行存放。即使撤掉“抽水装置”(断开连接,离线状态),也可以保持“水”的存在。这也正是ADO.NET的核心。 DataTable则像水库中的
5、每个独立的水池子,分别存放不同种类的水。一个大水库由一个或多个这样的水池子组成。重点提示:释放数据库连接是数据库编程中非常重要的操作,作为数据库价格的核心因素并发连接数是数据库的宝贵资源,因此在使用数据库连接对象时,应保证应用程序在最短时间释放连接。 .NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。 ConnectionConnection Command Command DataAdapterDataAdapter DataReaderDataReader SQL Server 提供程序以下是每个数据提供程序所包含的主要类:SQL Serv
6、er 数据提供程序位于System.Data.SqlClient命名空间。是开启程序和数据库之间的连结没有利用连接对象将数据库打开,是无法从数据库中取得数据的这个对象在ADO.NET的最底层可以自己产生这个对象,或是由其它的对象自动产生Connection Connection 对象与数据库连接对象与数据库连接1. Connection对象的常用属性对象的常用属性(1)ConnectionString:获取或设置用于打开数据库的字符串。(2)DataBase:获取当前数据库或连接打开后要使用的数据库的名称。(3)DataSource:该属性用来设置要连接的数据源实例名称, 例如SQLServe
7、r的Local服务实例。 (4)State属性:属性:是一个枚举类型的值,用来表示同当前数据库的 连接状态表 State的取值 2.Connection2.Connection对象的连接字符串对象的连接字符串在ConnectionString连接字符串里,一般需要指定将要连接数据源的种类、数据库服务器的名称、数据库名称、登录用户名、密码、等待连接时间、安全验证设置等参数信息,这些参数之间用分号隔开。 (1)Provider参数参数 Provider参数用来指定要连接数据源的种类。如果使用的是SQL Server Data provider ,则不需要指定Provider参数,因为SQL Ser
8、ver DataProvider已经指定了所要连接的数据源是SQl Server服务器。 (2 2)ServerServer参数参数Server参数用来指定需要连接的数据库服务器(或数据域)。比如Server=(local),指定连接的数据库服务器是在本地。如果本地的数据库还定义了实例名,Server参数可以写成Server=(local)实例名。另外,可以使用计算机名作为服务器的值。如果连接的是远端的数据库服务器,Server参数可以写成Server=IP或“Server=远程计算机名”的形式。Server参数也可以写成Data Source,比如Data Source=IP地址。 (3 3
9、)DataBaseDataBase参数参数DataBase参数用来指定连接的数据库名。比如DataBase=Master,说明连接的数据库是Master,DataBase参数也可以写成Initial Catalog,如Initial Catalog=Master。 (4 4)UidUid参数和参数和PwdPwd参数参数Uid参数用来指定登录数据源的用户名,也可以写成UserID。比如Uid(User ID)=sa,说明登录用户名是sa。Pwd参数用来指定连接数据源的密码,也可以写成Password。比如Pwd(Password)=,说明登录密码是。 (5 5)Integrated Securi
10、tyIntegrated Security参数参数Integrated Security参数用来说明登录到数据源时是否使用SQL Server的集成安全验证。如果该参数的取值是True(或SSPI,或Yes),表示登录到SQL Server时使用Windows验证模式,即不需要通过Uid和Pwd这样的方式登录。如果取值是False(或No),表示登录SQL Server时使用Uid和Pwd方式登录。对象对象.ConnectionString=Server= (local); DataBase=Master;Uid =sa;Pwd=; 由于没有指定Provider,连接SQL Server数据库
11、。需连接的SQL Server数据库服务器是local,数据库是Master,用户名是sa,密码为空。3. Connection3. Connection对象的常用方法对象的常用方法 Connection类型的对象用来连接数据源。在SQL Server Data Provider里叫SqlConnection。SqlConnection conn = new SqlConnection();/创建数据库连接对象注意:数据库连接必须小心,应该在最晚的时候建立连接,在最早的时候关闭连接,以释放占用的内存和网络带宽资源。Open方法:打开数据库连接。conn.Open();Close方法:关闭与数据
12、库的连接,这是关闭任何打开连接的首选方法 。nOpen和Close方法 都不带参数,均无返回值。conn. ConnectionString = Data Source = (local); Initial Catalog = study;Integrated Security=true; 集成验证模式SqlConnection conn = new SqlConnection();/创建数据库连接对象conn. ConnectionString = Data Source = (local); Initial Catalog = study;user id=sa;password=sa; ;
13、/数据库连接字符串conn. Open() ;/建立数据库连接注意:只有当一个连接关闭以后才能把另一个不同的连接字符串赋注意:只有当一个连接关闭以后才能把另一个不同的连接字符串赋值给值给Connection Connection 对象。如果不知道对象。如果不知道ConnectionConnection对象在某个时候是打对象在某个时候是打开是关闭时,可以检查开是关闭时,可以检查ConnectionConnection对象的对象的StateState属性,它的值可以是属性,它的值可以是Open,Open,也可以是也可以是ClosedClosed,这样就可以知道连接是否是打开的。,这样就可以知道连接
14、是否是打开的。 (1)启动visual studio .net,新建一个windows 应用程序。(2)从工具栏中拖动一个Button控件到页面中,将ID设为btnconnect,Text属性为“点击连接数据库”。(3)在Form1.cs文件中添加名称空间using System.Data.SqlClient;(4)双击btnConnect控件,在Click事件相关处理程序btnconnect_click中输入以下代码:(5)按ctrl+f5运行项目,单击表单中的”点击连接数据库“按钮,如果数据库连接成功,则将依次弹出两个对话框。(6)如果连接不成功,则会得到提示错误信息的页面。架构在Conn
15、ection对象上向数据库发出操作指令(增、删、改、查)呼叫存在数据库中的预存程序等透过连结到数据源的Connection对象来下命令Connection连结到哪个数据库,Command对象的命令就下到哪里 Command对象的常用属性有CommandType、CommandText 1.CommandType属性属性 CommandType属性用来获得或设置CommandText属性中的语句是SQL语句、数据表名还是存储过程。该属性的取值有3个,见表值说明StoredProcedure 指示CommandType属性的值为存储过程的名称 TableDirect指示CommandType属性的
16、值为一个或多个表的名称只有OLE DB的.NET Framework数据提供程序才支持TableDirect Text指示CommandType属性的值为SQL文本命令(默认) 2.CommandText属性属性 根据CommandType属性的不同取值,可以使用CommandText属性获取或设置SQL语句、数据表名(仅限于OLE DB数据库提供程序)或存储过程 在SQL Server Data Provider里叫SqlCommand SqlCommand cmd=new SqlCommand( ); /创建命令对象创建命令对象cmd.Connection=连接对象连接对象;/将已有连接赋
17、给命令对象将已有连接赋给命令对象cmd.CommandType=CommandType.Text;string sql=“select * from student”;cmd.CommandText=sql;/将已有命名文本赋给命令对象执行不返回结果的命令,通常使用这个命令执行插入、更新或者删除操作;通常使用它来执行Update、Insert、Delete语句。该方法返回值意义如下:对于Update、Insert、Delete语句返回值为该命令所影响的行数,对于其它类型的语句,返回值为-1。cmd.ExecuteNonQuery( ); 执行返回单个值的命令;2、 SqlCommand对象的方
18、法命令对象构造完成后,就可以执行命令对数据库进行操作。:释放资源 UpdateUpdate、InsertInsert、DeleteDelete语句中参数构造方式语句中参数构造方式在这些语句中应该根据用户实际输入的信息进行处理,这时候应使用参数化方式。string sql=“Update student Set sName=userName Where ID=userid”; 有了包含参数的Command对象,需要为命令中的每一个参数创建一个Parameter对象。SqlCommand类提供了一个Parameters集合属性,用以为命令保存所有的参数,主要用到SqlParameter(是为了SQ
19、L语句的安全,防止注入)。另外必须指出哪部分是参数,可变参数要加前缀。(1)Add方法SqlParameter sp = new SqlParameter(username, Pudding);cmd.Parameters.Add(sp);sp = new SqlParameter(userid, 1);cmd.Parameters.Add(sp);(2)AddRange方法SqlParameter parameters = new SqlParameter new SqlParameter(userName, textBox1.Text), new SqlParameter(user id,
20、 textBox2.Text) ;cmd.Parameters.AddRange(parameters);一次一笔向下循序的读取数据源中的数据这些数据是只读的,并不允许作其它的操作节省资源而且效率很好可以降低网络的负载架构在Command对象上,并提供了许多配合DataSet使用的功能在数据源与DataSet之间执行数据传输的工作它可以透过Command对象下达命令后,并将取得的数据放入DataSet对象中如何将数据库的数据放在 DataSet 中?数据库数据库DataSet数据集数据集Connection数据库连接数据库连接DataAdapter数据适配器数据适配器这个对象架构在DataAd
21、apter对象上可以视为一个暂存区(Cache)可以把从数据库中所查询到的数据保留起来可以将整个数据库显示出来可以储存多个Table可以透过DataAdapter对象取得表结构可以记录数据表间的关联本身不具备和数据源沟通的能力与数据库关系图应用程序应用程序大量的数据大量的数据来自多个数据源来自多个数据源大批量的查询、修改数据怎么办?想在断开数据库连接的情况下操作数据怎么办?使用使用 DataSet 对象对象 DataSet 数据集 简单理解为一个临时数据库 将数据源的数据保存在内存中 独立于任何数据库生产线生产线应用程序应用程序驻留于内存,驻留于内存,临时存储数据临时存储数据类似的关系类似的关
22、系DataSetDataSet结构结构DataSet对象包含了DataTable和DataRelation类型的对象。 DataTable用来存储一张表里的数据,来映射数据库里的表,其中的DataRows对象就用来表示表的字段结构以及表里的一条数据。DataRelation类型的对象则用来存储DataTable之间的约束 关系。DataTable和DataRelation对象都可以用对象的集合(Collection)对象类管理。 DataSet 的基本结构的基本结构DataSetDataTableDataColumnCollectionDataRowCollectionDataColumnDa
23、taRowDataTableCollection数据集数据集数据表的集合数据表的集合数据表数据表数据列的集合数据列的集合数据行的集合数据行的集合数据列数据列数据行数据行GradeTableClassTableStudentTableidnameclasssex1小菲5女2小薇3女3小强6男DataTableCollection数据表集合数据表集合DataTable数据表数据表DataRowCollection数据行集合数据行集合DataRow数据行数据行DataColumnCollection数据列集合数据列集合DataColumn数据列数据列 DataTable具有以下常用属性。 (1)Ro
24、ws:用来表示该DataTable的DataRow对象的集合,也就是对应着相应数据表里的所用记录。程序员能通过此属性,依次访问DataTable里的每条记录。该属性有如下方法。 Add:把DataTable的AddRow方法创建的行追加到末尾。 InsertAt:把DataTable的AddRow方法创建的行追加到索引号指定 的位置。 Remove:删除指定的DataRow对象,并从物理上把数据源里的对应 数据删除。 RemoveAt:根据索引号,直接删除数据。 (2)Columns:用来表示该DataTable的DataColumn对象的集合,通过此属性,能依次访问DataTable里的每个
25、字段。 shuju.Tablesuserinfo.Rows.Countshuju.Tablesuserinfo.Rows01创建一个 DataSetDataSet dataSet = new DataSet();DataSet dataSet = new DataSet(“GuestBook);DataSet 数据集对象数据集对象 = new DataSet(数据集的名称字符串数据集的名称字符串);可选的可选的 使用 DataAdapter 对象填充数据集使用使用 Fill() 方法方法填充填充 DataSet 中的表中的表使用使用 Connection 连接数据源连接数据源Connectio
26、nDataAdapter 的的 Fill() 方法方法SqlDataAdapter 对象名对象名 = new SqlDataAdapter();创建创建 SqlDataAdapter 对象对象1DataAdapter对象对象. Fill(数据集对象数据集对象, 数据表名称字数据表名称字符串符串);填充填充 DataSet2 把数据集中修改过的数据提交到数据源dataAdapter.Update(dataSet,Teacher);DataAdapter 的的 Update() 方法方法或者直接调用或者直接调用sqlCommandsqlCommand对象的对象的ExecuteNonQuery()方法()方法Connection数据库程序设计的步骤总结:数据库程序设计的步骤总结:1.创建一个数据库连接对象并打开创建一个数据库连接对象并打开SqlConnection conn = new SqlConnection();conn.ConnectionS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届长治市襄垣县三年级数学第二学期期末教学质量检测模拟试题含答案解析
- 2026年四川省峨眉山市高三数学下册期末考试模拟考试卷附答案(夺分金卷)
- 2026年山东省高密市高三数学下册期末考试模拟测试卷及完整答案【名师系列】
- 2026年河北省深州市高三数学下册期末考试模拟测试卷及答案【新】
- 2026年贵州省都匀市高三数学下册期末考试模拟考试卷及完整答案(易错题)
- 2026年吉林省和龙市高三数学下册期末考试模拟检测卷(能力提升)附答案
- 2026年山东省蓬莱市高三数学下册期末考试模拟考试卷附答案(A卷)
- 2026年贵州省兴义市高三数学下册期末考试模拟检测卷【考点梳理】附答案
- 电子控制节气门体:成熟市场中的结构性机会
- 矿产勘查野外工作方法
- 小班美工《图形添画》课件
- 街道辅助人员笔试试题(附答案)
- 职场动物进化手册
- 银行分流引导课件
- 初中语文统编版(五四学制)六年级上册第四单元13 穷人 公开课一等奖创新教学设计
- 贫血病人疑难病例讨论
- 系统工程课件完整版
- 粤语教学课件
- 军队文职人员(中医学)科目近年考试真题(200题)
- 医学课件酸碱平衡紊乱
- 乳腺结节健康科普知识讲座
评论
0/150
提交评论