第12章-数据库技术_第1页
第12章-数据库技术_第2页
第12章-数据库技术_第3页
第12章-数据库技术_第4页
第12章-数据库技术_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQLServer回顾数据管理方式的变迁无管理阶段文件管理阶段数据库管理阶段SQL数据库企业管理器—可视化数据库管理工具通过图形化界面,使用鼠标点击等操作手段完成数据库的创建、删除以及数据的增、删、改、查等操作查询分析器—命令行式的数据库管理工具以数据库管理系统可理解的命令来完成上面的操作。练习创建一个数据库mydb_XX(XX是你的学号后两位)创建一个表,表名字为students向表中添加几行数据分别用企业管理器和查询分析器完成上述操作使用查询分析器完成以下操作查找姓名是“张三”的人查找身高超过1.75米的人查找姓“李”的人删除小于14岁的人在C#中操作数据库通过C#可用的各种系统类,在c#程序中将数据库操作命令传递给数据库管理系统从而完成数据库数据的增删改查等操作,并在需要的时候将操作结果显示在c#程序的窗口中所有可以在查询分析器中执行的命令都可以通过c#中对象来执行,执行的结果也可以通过对象带回到c#程序中来显示12.2ADO.NET概述

ADO.NET是美国微软公司最新推出的.NET平台中的一种数据访问技术。ADO.NET类库中提供了用于数据连接、处理数据操作的类。ADO.NET中的所有类都定义在System.Data名称空间及其子空间中,使用对象必须导入:System.Data使用中访问sqlserver数据库的对象,需要导入:

System.Data.SqlClient使用access等数据库需要导入:

System.Data.OleDbADO.NET对象允许通过组件连接到数据库,在数据库中进行检索、编辑、删除和插入数据,并在程序中处理数据。12.2.1ADO.NET组件

DataSet类

ADO.NET的一个比较突出的特点是支持离线访问,即在非连接环境下对数据进行处理,DataSet是支持离线访问的关键对象,它将数据存储在缓存中。DataSet对象不关心数据源的类型,它将信息以表的形式存放。DataSet对象是非连接存储和处理关系的基础。.NETDataProvider核心类

.NETFramework数据提供程序包括四个核心类,用于实现对数据库的数据处理。(1)Connection对象数据应用程序和数据库进行交互要在建立数据库连接的基础上,Connection对象成为连接对象,提供了对数据存储中正在运行的事务(Transanction)的访问技术。(2)Command对象

Command对象用于执行数据库的命令操作,命令操作包括检索、插入、删除以及更新操作。(3)DataAdapter对象

DataAdapter(数据适配器)对象在DataSet对象和数据源之间架起了一座“桥梁”。(4)DataReader对象

DataReader对象用于从数据库中读取由SELECT命令返回的只读、只进的数据流,在这个过程中一直保持与数据库的连接。12.3.1数据库连接—Connection类连接不同的数据源使用不同的数据库,连接Sqlserver数据源需要使用SqlConnection类1、常用属性:ConnectionString,被称为连接字符串,是一个用于指明如何去连接数据库的字符串。该字符串可以手写,也可以由向导自动生成State,指明当前对象的连接状态,他可能有两个取值:ConnectionState.OpenConnectionState.Closed

分别表示数据库已经连接和未连接

2.常用方法Open方法:该方法用于打开由ConnectionString属性指定的数据源连接。Close方法:该方法用于断开当前到数据库的连接【例12-1】使用Connection对象建立与数据库的连接,显示数据库的状态,并使用open方法和close方法实现连接的打开和关闭。创建空白windows程序项目显示工具箱找到到“数据”选项卡,如果选项卡中没有类,使用,快捷菜单中的“选择项”命令将类添加到选项卡中向项目中添加SqlConnection对象设置

SqlConnection

对象的

ConnectionString

属性“打开连接”按钮的Click事件代码:

sqlConnection1.Open();“断开连接”按钮的Click事件代码:

sqlConnection1.Close();“显示连接状态”按钮的Click事件代码:

if(sqlConnection1.State==ConnectionState.Open)MessageBox.Show("当前Connection对象处于与数据库连接的状态");if(sqlConnection1.State==ConnectionState.Closed)MessageBox.Show("当前Connection对象处于与数据库未连接的状态");

12.3.2SqlCommand类

Command类用于执行数据库的命令操作。用于访问Sqlserver数据库的Command类是SqlCommand类Command类的常用属性Connection属性:与数据库进行连接的SqlConnection对象名CommandText属性:需要执行的sql命令CommandType属性:命令的类型可以取值为CommandType.Text;一条通用sql语句CommandType.StoredProcedure

;一个存储过程CommandType.TableDirect

;一个表名字Command类的常用方法ExecuteNonQuery(),如果要执行的命令不返回数据表的若干行,比如Delete、Update、Insert等语句(主意:select语句将返回数据表的若干行)就可以用这个方法来执行ExecuteReader(),如果要执行的命令是一个Select语句就可以使用该方法返回一个SqlDataReader对象,然后使用这个SqlDataReader对象获取语句执行后所选出的数据ExecuteScalar(),如果执行的语句是一个Select语句也可以用这个方法,但是该方法只能得到一个object类型的返回值,该值和返回的数据中的最左上角的数据相等练习1:使用SqlCommand对象完成向数据表中添加数据创建一个空白项目,向项目中添加如图所示的控件设置SqlConnection1对象的ConnectionString属性设置SqlCommand1对象的Connection属性为SqlConnection1编写按钮的Click事件代码如下:添加按钮的Click事件应该做如下工作1、打开到数据库的连接2、构造要执行的sql语句3、将构造好的sql语句赋值给SqlCommand对象的CommandText属性4、针对Sql语句的类型设定CommandType类型5、执行sql语句6、关闭到数据库的连接

sqlConnection1.Open();stringsql="insertintostudents(xuehao,xingming,xingbie)values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"')";sqlCommand1.CommandText=sql;sqlCommand1.CommandType=

CommandType.Text;sqlCommand1.ExecuteNonQuery();sqlConnection1.Close();Sql语句构造法:变量—常量—变量法Sql语句中含有变量,先为每一个变量假设一个常量值,例如上个例子中三个变量:学号,姓名,性别;可以分别假定他们是:1,张三,男用假设的常量构造sql语句

insertinto

students(xuehao,xingming,xingbie)values(‘1’,’张三’,’男’)

主意:以上的句子应该写在一行里3.将所有常量与语句的其他部分分开insertintostudents(xuehao,xingming,xingbie)values(‘

1

’,’

张三

’,’

男’)4.非常量部分每一段都用双引号引起来“insertintostudents(xuehao,xingming,xingbie)values(‘”

1

“’,’”

张三

“’,’”

“’)”5.将每个常量部分用存储他们的变量代替本例中:1是学号,存储在textBox1.Text中张三是姓名,存储在textBox2.Text中男是性别,存储在textBox3.Text中“insertintostudents(xuehao,xingming,xingbie)values(‘”

textBox1.Text

“’,’”

textBox2.Text

“’,’”

textBox3.Text“’)”变量中如果有非string类型的,调用它的ToString()方法将其转变为字符串6.用+将各部分相连"insertintostudents(xuehao,xingming,xingbie)values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"')“至此语句构造完成练习2:练习3:读取并显示数据sqlCommand类的ExecuteReader()方法可以返回一个SqlDataReader类型的对象SqlDataReader的对象有一个Read()方法,该方法用来读取command对象执行命令后返回的数据,每执行一次read()方法可以读取一条,如果无法读到数据该方法将返回false值,否则返回true如果读到数据可以用以下方法取得读到的数据假设DataReader的对象名为drDr[“字段名”].ToString(),就可以获得指定字段的值sqlConnection1.Open();stringsql=“select*fromstudents";sqlCommand1.CommandText=sql;sqlCommand1.CommandType=CommandType.Text;SqlDataReader

sdr=sqlCommand1.ExecuteReader();while(sd.Read()){stringss=sdr[“xuehao”].ToString()+sdr[“xingming“].ToString();listBox1.Items.Add(ss);}sqlConnection1.Close();练习4:在学号栏中输入学号,单击查找按钮,将找到的学生显示在列表框中数据显示控件:DataGridView能够以表格的形式显示从数据库中读出来的数据例题:1、DataGridView和SqlDataReader配合完成数据表的显示使用步骤在窗口中适当位置放置一个DataGridView控件(在前面的例子中获得DataReader对象后,不再使用read方法读数据而是采取下面的三条语句来完成数据显示BindingSourcebs=newBindingSource();bs.DataSource=sdr;dataGridView1.DataSource=bs;2、修改显示在DataGridView中的数据(1)选中某一行,单击修改按钮(2)将选中的行的每一列的值填写到文本框中供用户修改(3)单击提交按钮将用户的修改提交数据库(4)重新绑定DataGridView数据知识点:

DataGridView的SelectionMode属性设置为DataGridViewSelectionMode.FullRowSelect

使DataGridView中的数据只能被选中正行,而不能只选中某一个单元格DataGridView的SelectedRows属性集合,存储所有被选中的行dataGridView1.SelectedRows[i].Cells[“列名”].Value.ToString();

可以获得被选中的行中的第i行的某个字段的值通过命令选中某一行

BindingSourcebs=(BindingSource)(dataGridView1.DataSource);bs.Position=被选中的行的行号(从0开始);12.3.3创建DataAdapter对象该对象包含有SelectCommand、InsertCommand、UpdateCommand和DelectCommand四个属性,用来定义处理数据存储中数据的命令,并且每个命令都是对Command对象的一个引用,可以共享同一个数据源。1.常用方法

Fill方法:该方法用来执行SelectCommand,用数据源的数据填充DataSet对象。2.创建方法章节目录上一页下一页12.3.3创建DataSet对象

DataSet对象用于实现通过DataAdapter数据提供程序控件和数据库相连接,然后通过相关控件和数据库应用程序连接。DataSet的结构与关系数据库的结构相似,它包括表集合(Tables)和描述表之间关系的关系集合。1.常用方法章节目录上一页下一页2.DataSet对象的创建

DataSet对象的创建可以通过工具栏中的控件实现,DataSet对象可通过DataAdapter对象属性窗口下方的“生成数据集”超级链接来建立,或者单击DataAdapter对象,在下拉表中选择“生成数据集”。3.填充DataSet对象

DataSet对象是一个必须填充的容器,填充方法有多种:调用DataAdapter的Fill方法、手工填充、复制或合并其它DataSet的数据。我们这里介绍使用DataAdapter的Fill方法填充DataSet对象。章节目录上一页下一页【例12-3】使用DataGrid控件显示employee.mdb中表employee的数据。程序如图12-18所示。章节目录上一页下一页图12-18程序运行结果12.3.4.使用数据窗体向导使用数据窗体向导创建简单数据库应用程序是快捷简便的途径,用户仅需要按向导提示回答若干问题,即可生成一个具有基本数据库管理功能的应用程序。以创建一个处理数据库employee的数据库应用程序了解数据库窗体向导的创建。章节目录上一页下一页12.3.4数据绑定1.DataGrid控件的数据绑定2.常用控件的数据绑定在常用控件中,往往要使用数据绑定实现数据库应用程序的开发,这里介绍常用控件的数据绑定。实现数据绑定的一般步骤如下:①无论是简单型的数据绑定,还是复杂型的数据绑定,要实现绑定的第一步就是就是要连接数据库,得到可以操作的DataSet。②根据不同组件,采用不同的数据绑定:对章节目录上一页下一页【例12-6】在【例12-5】的基础上使用Label控件和TextBox控件实现数据绑定。程序运行结果如图12-30所示。章节目录上一页下一页图12-30程序的运行结果12.4增加、删除与修改数据库记录12.4.1SQL简介1.查询语句SELECT2.插入语句Insert3.修改语句Update4.删除语句Delete章节目录上一页下一页12.4.2浏览记录使用SQL语句可以实现多表之间的衔接,通过使用DataAdapter控件实现数据表的多表查询,也可以通过Command控件实现,并通过相应的控件实现数据的显示及浏览。下例介绍使用DataAdapter进行数据浏览。章节目录上一页下一页【例12-8】使用Button控件实现导航,使用DataGrid控件实现数据的浏览。运行结果如图12-32所示。章节目录上一页下一页图12-32程序运行结果本例中实现student表和Teacher表的关联。方法是在oleDbDataAdapter1配置数据适配器中,通过SQL语句进行实现连接查询,代码如下:

SELECTstudent.Sno,student.Sname,Teacher.TeacherASTeacher,Teacher.CourseASCourseFROM(studentINNERTeacherJOINONTeacher.Course=student.Course)

导航按钮的实现通过改变记录指针进行实现。只有掌握如何改变记录指针,才可以随心所欲的浏览记录。章节目录上一页下一页在窗体中使用BindingManagerBase类时,要在Form1类中添加对象的命名,代码如下:privateBindingManagerBase

myBind;

本例中使用oleDbDataAdapter1填充数据集dataSet11,并定义BindingManagerBase对象myBind为dataSet11管理绑定对象,代码如下:oleDbDataAdapter1.Fill(dataSet11,"student");//填充数据集myBind=this.BindingContext[dataSet11,"Student"];章节目录上一页下一页【前一条】按钮的Click事件代码如下:myBind.Position=myBind.Position-1;【后一条】按钮的Click事件代码如下:myBind.Position=myBind.Position+1;【第一条】按钮的Click事件代码如下:myBind.Position=0;【最后一条】按钮的Click事件代码如下:myBind.Position=myBind.Count-1;章节目录上一页下一页12.4.3增加记录增加数据记录可以通过DataSet控件实现,首先创建一个新行,使用NewRow方法或Add方法将新数据行添加到数据表的DataRow集合中,调用DataAdapter的Update方法实现数据库的更新,并调用DataSet的AcceptChanges接受更改。如:DataTable

mytable=dataSet11.Tables["Teacher"];object[]o={"软件基础","李信"};mytable.Rows.Add(o);oleDbDataAdapter1.Update(dataSet11);dataSet11.AcceptChanges();章节目录上一页下一页12.4.4删除记录删除表中的元素可以从DataTable对象中删除DataRow对象,使用Delete方法。如:DataTable

mytable=dataSet11.Tables["Teacher"];mytable.Rows[1].Delete();oleDbDataAdapter1.Update(dataSet11);dataSet11.AcceptChanges();章节目录上一页下一页12.4.5更新记录应用程序中的数据更新应及时反映在数据库的操作上,如通过dataSet修改了相应的数据,则要把该修改表现在数据库中,因为dataSet和DataAdapter相互传送数据,则对数据的更改通过DataAdapter的Update()方法实现。章节目录上一页下一页12.4.6ADO.NET创建Windows应用程序的应用【例12-11】使用ADO.NET创建一个简单的通讯录程序,实现通过DataGrid控件浏览记录,实现添加、删除、保存和更新的功能。①使用Access建立一个数据库,包含一txl表,至少包含编号、姓名、电话、手机四个字段。②新建一个Windows应用程序。界面如图12-36所示。③窗体设计。设置控件的Text属性,设置dataGrid1的DataSource属性,如图12-37所示。章节目录上一页下一页章节目录上一页下一页图12-36窗体设计界面④编写代码实现相应的程序功能。首先由于要填充dataSet11,在代码publicF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论