lecture11数据库程序设计_第1页
lecture11数据库程序设计_第2页
lecture11数据库程序设计_第3页
lecture11数据库程序设计_第4页
lecture11数据库程序设计_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1理解数据库的基本概念,掌握数据绑定的实现方法,熟悉DataGridView、BindingSource等常用数据控件掌握ADO.NET主要对象的属性、方法及编程设置了解SQL的构成和语法,掌握基本数据操纵语句掌握数据库查询和更新(插入、删除、修改)的实现方法

本章教学目标学习建议先掌握设计阶段用控件绑定的方式操作数据库,这种方式简单再掌握利用ADO.NET数据库对象用程序代码来操作数据库,这种方式灵活本次课内容ADO.NET简介ADO.NET对象连接式访问数据库(Connection+Command)断开式访问数据库(Adapter+DataSet)数据集11.3ADO.NETADO.NET是专门用于数据库连接与访问的类。使用时,必须引用System.Data命名空间,还应根据数据源的类型,选择引用相关的命名空间。ADO.NET层次结构11.3.1ADO.NET的体系结构DataSetDataTable对象DataRelation对象DataRowDataColumnConstrainDataProviderDataAdapter对象SelectCommandInsertCommandDeleteCommandConnection对象UpdateCommandCommand对象DataReader对象ADO.NET对象模型ConnectionCommandDataAdapterDataReaderDataSet数据库应用客户端数据源1.DataProvider(数据提供程序)Connection建立数据源连接;Command生成并执行SQL语句,对数据库进行操作并返回数据DataReader接收由Command对象的ExecuteReader()方法返回的对象,每次只存储结果集当中的一个数据行DataAdapter通过Command对象执行SQL语句,将获得的结果集填充到DataSet对象中;将DataSet更新数据的结果返回到数据库数据库类型与命名空间引用Access数据库要求引用System.Data.OleDbSQLServer数据库要求引用System.Data.Sql2.DataSet(数据集)容纳DataProvider传递过来的数据库访问结果把应用程序的执行结果更新到数据库中可以看作是一种驻留内存数据库,并与特定的数据库无关。11.3.2Connection对象SqlConnection的属性和方法实例

11.3例11.3连接SQLServer数据库。实例

11.3程序代码usingSystem.Data;usingSystem.Data.SqlClient;。。。stringconStr="DataSource=chengzg-pc;InitialCatalog="+dbname+";UserID=sa;Password=123456";SqlConnectioncon=newSqlConnection(conStr);try{ con.Open(); if(con.State==ConnectionState.Open)textBox1.Text=dbname+":数据库连接成功!";}catch(Exceptionex){ textBox1.Text=dbname+":数据库连接失败\n"+ex.Message;}finally{ con.Close();}说明DataSource=chengzg-pc;数据库服务器名或者IPInitialCatalog=PST;指定服务器上的数据库名UserID=sa;数据库用户名Password=123456数据库用户密码操作数据库的代码均在try…catch…finally结构中11.3.3Command对象SqlCommand的属性与方法实例11.4例11.4连接PST数据库,使用SqlCommand统计省中心测试员人数例11.4代码stringconStr="DataSource=chengzg-pc;InitialCatalog=PST;User ID=sa;Password=123456";SqlConnectioncon=newSqlConnection(conStr);SqlCommandcmd=newSqlCommand();cmd.Connection=con;cmd.CommandText="selectcount(*)fromt_judgeinfowhere fromcenterid='12'";try

{con.Open();if(con.State==ConnectionState.Open)

{ intnum=(int)cmd.ExecuteScalar(); textBox1.Text="省中心共有测试员:"

+num+"名。";}}catch(Exceptionex)

{}finally

{con.Close();}说明CommandText属性赋值的字符串是一个SQL语句,统计“学生基本情况表”中男生人数。ExecuteScalar()方法不需要任何参数,它按照CommandText属性所包含的SQL语句执行对指定数据库的操作,返回结果为一个值,而不是一个集合由于事先无法预知返回结果的数据类型,所以返回值为Object类型,引用时需要进行类型转换。11.3.4DataReader对象以顺序(forwardonly)、只读(readonly)的方式从数据库中获得数据结果集访问数据库、执行SQL操作时,DataReader要求与数据库始终保持连接(Connection不能Close)在查询数据量不大,并且不需要随机访问和修改数据的场合具有较高的效率实例11.5例11.5输出测试员信息实例11.5程序代码cmd.Connection=con;cmd.CommandText="select*fromt_judgeinfowhere fromcenterid='12'";try{con.Open();if(con.State==ConnectionState.Open)

{SqlDataReaderreader=cmd.ExecuteReader();textBox1.Text="登录名\t姓名\t所属中心\temail\r\n";while(reader.Read())

{ textBox1.Text+=reader["loginName"]+"\t"+ reader[3]+"\t"+reader.GetValue(5)+"\t"+ reader.GetString(10)+"\r\n";

}}}说明reader类似于查询结果集的游标,代表当前记录可以通过多种方式获取当前记录中的字段值reader[“loginName”]reader[3]reader.getValue(5)reader.getString(10)返回Object,须强制转换返回具体类型查看数据集cmd.CommandText="select*fromt_judgeinfo";SqlDataReaderreader=cmd.ExecuteReader();while(reader.Read()){ Objectobj=reader[0];}添加记录cmd.CommandText=“@InsertInfot_judgeinfovalues(‘3004’,’hz001’,’123456’,…)";intnum=cmd.ExecuteNonQuery(); num为受影响的记录数修改记录cmd.CommandText="Updatet_judgeinfosetpassward=‘123456’whereloginName=‘hz001’”;intnum=cmd.ExecuteNonQuery(); num为受影响的记录数删除记录cmd.CommandText=“Deletefromt_judgeinfowhereloginName=‘hz001’”;intnum=cmd.ExecuteNonQuery(); num为受影响的记录数11.3.5DataAdapter对象获取Command对象SQL语句执行得到的结果集,将其填充到DataSet对象中(Fill)将DataSet里更新数据的结果返回到数据库(Update)Fill()方法,将数据源数据填充到本机的DataSet或者DataTable中,填充完成后与数据库服务器的连接就自动断开然后可以对DataSet中的数据集进行浏览、插入、修改和删除等操作操作完成后,利用DataAdapter对象的Update()方法恢复与数据库的连接,把DataSet或者DataTable中的处理结果更新到数据库中然后再次断开数据库连接实例11.7

例11.7利用SqlDataAdapter和DataSet动态绑定DataGridView实现数据库内容的显示和交互式更新例11.7代码(1)SqlDataAdapteradapter;DataSetds;privatevoidForm1_Load(objectsender,EventArgse){stringconStr="DataSource=chengzg-pc;InitialCatalog=PST;UserID=sa;Password=123456";stringsql="select*fromt_judgeinfowhereIDlike'%9999%'";

adapter=newSqlDataAdapter(sql,conStr);ds=newDataSet();

SqlCommandBuilderbuilder=newSqlCommandBuilder(adapter);adapter.DeleteCommand=builder.GetDeleteCommand(); adapter.InsertCommand=builder.GetInsertCommand();adapter.UpdateCommand=builder.GetUpdateCommand();}例11.7代码(2)privatevoidbutton1_Click(objectsender,EventArgse)//查看{ ds.Clear();

adapter.Fill(ds,"judgeInfo"); dataGridView1.DataSource=ds.Tables["judgeInfo"]; }privatevoidbutton2_Click(objectsender,EventArgse) //保存{dataGridView1.EndEdit();

adapter.Update(ds.Tables["judgeInfo"]);

MessageBox.Show("修改后的数据已经成功地保存到数据库中","数据保存");}11.3.6DataSet对象用来存储从数据库查询到的数据结果,由于获得数据或更新数据后立即与数据库断开,所以程序员能用它实现高效的数据库操作。11.3ADO.NETDataSet对象11.3.6DataSet对象存储从数据库查询到的数据结果获得数据或更新数据后立即与数据库断开通过DataAdapter对象从数据库获取数据,并把修改后的数据更新到数据库DataAdapter的桥梁作用DataAdapterDataSourceDataTableFillUpdateSelectCommand1.DataTable和DataRow对象Rows属性常用方法Add(): 把DataTable的NewRow()方法创建的行追加到末尾InsertAt(): 把NewRow()方法创建的行插入到索引号指定的位置Remove(): 删除指定DataRow对象,并从物理上删除数据源中对应数据RemoveAt(): 根据索引号,直接删除指定行的数据Columns属性常用方法Add(): 把新创建的列添加到列集合中AddRange(): 把DataColumn类型的数组添加到列集合中Remove(): 把指定名称的列从列集合中移除RemoveAt(): 把指定索引位置的列从列集合中移除实例11.8例11.8在窗体上添加菜单和DataGridView控件,然后以编程方式创建DataTable对象,并在DataGridView控件中显示其内容实例11.8程序代码privatevoidmenuBrowsing_Click(objectsender,EventArgse){DataTabletable=newDataTable(); table.Columns.Add("姓名",typeof(string)); table.Columns.Add("工作单位",typeof(string));table.Columns.Add("电话号码",typeof(string));DataRowrow=table.NewRow(); row["姓名"]="熊壮"; row["工作单位"]="重庆大学计算机学院";row["电话号码"]="";table.Rows.Add(row); row=table.NewRow(); row["姓名"]="宋文强"; row["工作单位"]="第三军医大学生物医学工程学院";row["电话号码"]="";table.Rows.Add(row); dataGridView1.DataSource=table; }说明DataTable和DataRow对象的所有数据都是在内存中生成的,没有涉及到数据库操作,所以不需要建立数据库连接。调用Columns.Add()方法,为DataTable添加了字段,同时确定它们的数据类型,创建表结构。在此基础上,创建DataRow对象,便拥有了执行语句行4~6添加的字段。把DataGridView添加到窗体时,系统自动弹出“DataGridView任务”对话框,要求选择数据源。本例中DataGridView的数据源是由DataTable对象提供的,所以不必选择数据源。2.DataRow和DataColumn对象DataRow用来描述数据库表中的记录DataColumn用来描述数据表的字段DataColumn常用属性实例11.9例11.9在窗体上添加菜单和DataGridView,然后以编程方式创建DataColumn和DataRow对象,并在DataGridView中显示其内容实例11.9程序代码(1)privatevoidmenuBrowsing_Click(objectsender,EventArgse){DataColumncolumn1=newDataColumn("姓名");column1.DataType=typeof(string);column1.MaxLength=10;DataColumncolumn2=newDataColumn("工作单位");column2.DataType=typeof(string);column2.MaxLength=20;DataColumncolumn3=newDataColumn("电话号码");column3.DataType=typeof(string);column3.MaxLength=11;DataTabletable=newDataTable();table.Columns.Add(column1);table.Columns.Add(column2);table.Columns.Add(column3);

实例11.9程序代码(2)D

温馨提示

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

评论

0/150

提交评论