《C的数据库操作》PPT课件.ppt

上传人:za****8 文档编号:12668583 上传时间:2020-05-13 格式:PPT 页数:78 大小:1.17MB
返回 下载 相关 举报
《C的数据库操作》PPT课件.ppt_第1页
第1页 / 共78页
《C的数据库操作》PPT课件.ppt_第2页
第2页 / 共78页
《C的数据库操作》PPT课件.ppt_第3页
第3页 / 共78页
点击查看更多>>
资源描述
第9章C#的数据库操作,ADO.NET向编程人员提供了功能强大的数据访问能力,既可以直接在编程模式下通过输入程序代码设计数据访问程序,也可以利用系统提供的数据访问向导直接进行可视化程序设计。,9.1Access数据库数据库(Database,即DB)是存储在一起的相关数据的集合,是存储数据的“仓库”。是指依照一定格式存放在一起的数据记录文件。数据库中的信息是以表的形式组成的,一个数据库中可以放多个表,各个表具有行和列。“数据库管理系统DBMS”(databasemanagementsystem)则是用来操作与管理数据库的软件,MicrosoftAccess、MicrosoftSQLServer、Oracle都是属于DBMS软件,通过这些软件,用户可以对数据进行定义、创建与运算。,9.1.1建立Access数据库表选按“开始”|“程序”|“MicrosoftAccess”,启动Access,屏幕上会出现如图9-1所示的对话框,在任务窗格内点取“空Access数据库”,然后单击“确定”按钮。出现“文件新建数据库”对话框,指定新数据库的保存位置、文件名,然后按“创建”。在此,将新数据库存放在“我的文档”内,文件名称为“Friend”,文件夹型为MicrosoftAccess数据库。,信息中心专门人才基本情况表,9.1.1建立Access数据库表选按“开始”|“程序”|“MicrosoftAccess”,启动Access,屏幕上会出现对话框,在任务窗格内点取“空Access数据库”,然后单击“确定”按钮。出现“文件新建数据库”对话框,指定新数据库的保存位置、文件名,然后按“创建”。MicrosoftAccess创建的数据库文件的扩展名是.mdb。,9.1.2Access数据库操作1.创建新数据库项目2.创建数据库连接对数据库的操作首先要和数据库建立一个连接,与数据库建立连接可以通过系统提供的控件实现。3.创建数据库对象和访问方法4设置程序显示界面5.显示数据库中的数据,9.2客户/服务器(C/S)模式编程概念在网络应用中,应用模式的发展变化,可以按出现的时间次序分为:(1)文件服务器模式及域模式(2)客户机/服务器模式(client/server)模式(以下简称为C/S模式)(3)以Internet/Intranet为网络环境的B/S(Browser/Server)模式(4)电子商务的B2B模式和B2C模式其中文件服务器模式及域模式主要是从对用户和资源管理角度考虑的,数据计算发生在每个用户的工作站上。而B/S模式是C/S模式在Internet环境下的新的体现方式。,20世纪90年代以来,C/S模式得到了十分迅速的流行。它主要从一次数据计算的完成过程这个角度而言的,客户机进行数据请求,请求传到服务器,服务器负责完成数据计算或数据库操作,最终结果返回到客户机。几乎每个新的网络操作系统和每个新的多用户数据库系统都声称能支持C/S模式。实现C/S模式允许有许多不同的策略。从最典型的数据库管理系统的应用来看,在LAN上采取的C/S模式,即指在LAN中至少有一台数据库服务器(DBMSserver),可以作为希望去存取公共数据库的各台工作站的后援支持。把应用任务中的程序执行内容划分成两部分:与数据库存取有关的部分由DBMSserver承担,与应用的人机界面处理,输入/输出或一部分应用的逻辑功能等有关的内容由client端工作站承担。,SQL语言简介SQL(StructuredQueryLanuage,结构化查询语言)是现代关系数据库的标准语言。现在的大多数数据库系统都采用SQL语言作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作成为了可能。SQL语言的功能极为强大,语言十分简捷,第321页的表13-1列出了SQL语言的9个命令,这9个命令就可以完成几乎所有的数据操作,在这9个命令中,常用的只有4个。,如果要使用SQL编写程序,则需要另一语言或平台来实现所有实际信息的显示。,例如:SELECT*FROMSTU1,语句:SELECT学号,姓名,数学FROMSTU1,语句:SELECT学号,数学+5FROMSTU1,WHERE关键字在WHERE子句中,用条件表达式来确定要显示的记录。WHERE,例如:SELECT学号,姓名FROMSTU1WHERE数学=90,SELECT学号,姓名FROMSTU1WHERE数学=90OR平均分=85,BETWEEN关键字在WHERE子句中可以使用BETWEEN来指定可接受值的范围。例如:要显示学生档案表STU2中数学成绩在91到92的学生情况。SELECT*FROMSTU2WHERE数学BETWEEN(91)AND(92),LIKE关键字,格式:WHERELIKE说明:字符串常量中的字符可以包含如下两个特殊符号:%表示任意长度的字符串;_表示任意一个字符例:查询所有姓“张”的学生的学号和姓名。SELECT学号,姓名FROM学生表WHERE姓名LIKE张%例:查询第二个汉字是“红”的学生的学号和姓名SELECT学号,姓名FROM学生表WHERE姓名LIKE_红%,IN关键字在WHERE子句中使用IN可以指定值是否在表中。例如:显示学号为962102和962104的记录。SELECT*FROMSTU2WHERE学号in(“962102”,“962104”),ORDERBY关键字ORDERBYASC|DESC子句用来对数据结果排序,ASC按升序排列,DESC按降序排列,默认是ASC。如:SELCET*FROMSTU1WHERE数学IN(78,92,91),其结果按原记录顺序显示,要安数学成绩排序,需加上ORDERBY子句。如下例:,SELECT*FROMSTU1WHERE数学IN(78,92,91)ORDERBY数学,2.INSERT命令(插入命令)格式:INSERTINTO(属性列表)VALUE(数据表)功能:插入一条新记录,其内容是将VALUE后(数据表)中的数据依次送到(属性列表)中的各属性。,如:INSERTINTOSTU1(学号,姓名,计算机基础,数学,马列原理,体育,总分,平均分)VALLUE(962105,李小丽,77,88,90,80.2),3.UPDATE命令(更新命令)格式:UPDATESETWHERE例如:UPDATESTU2SET就读方式统招,UPDATESTU1SET计算机基础计算机基础1.15%,4.DELETE命令(删除命令)格式:DELETEFROM表文件名WHERE表达式如:DELETEFROMSTU2WHERE性别=女,9.3ADO.NET编程无论什么样的程序,都要与数据打交道,现在的程序中要处理的信息量越来越大,早已不能满足几个变量所提供的信息量,而是把大量信息预先存储到数据库文件中,然后利用某种技术读取数据库中的预存信息,将读取的信息送给程序界面显示出来,或将新内容存入数据库。ADO.NET就是就是负责数据存取的对象。,9.3.1ADO.NET的概念在应用程序中访问数据库的一般过程为:首先必须连接数据库;接着发出SQL语句,告诉数据库要进行什么样的工作;最后由数据库返回所需的数据记录。在ADO.NET中,上述访问数据库的三项工作,分别由三个对象来完成:Connection对象负责连接数据库;Command对象对数据下达SQL命令;DataSet对象用来保存所查询到的数据记录。在ADO.NET中,介于DataSet和Connection对象之间,还有一个在数据库与DataSet对象之间扮演传递数据的对象DataAdapter(适配器)。此外,还有一个DataView对象,该对象提供了对DataSet对象内的表进行排序、过滤记录及记录搜索等功能。,.NET框架是一个面向对象的系统,当使用该框架类库的具体部分时,需在应用程序中包含对命名空间引用的代码。当在应用程序中使用ADO.NET时,必须引用System.Data命名空间。另外,还要根据访问数据库的类型不同,而引用不同的命名空间,若访问OLEDB数据库,则需引用System.Data.OleDB命名空间;若访问SQLServer7.0以上版本的数据库,则需要引用System.Data.Sqlclient命名空间。,通常,使用ADO.NET开发数据库应用程序应遵循以下5个步骤:选择所使用的数据源,即选择使用哪个.NETFramework数据提供程序。使用Connection对象建立与数据源的连接。使用Command对象完成对数据源的操作。使用数据集对获得的数据进行各种操作,即利用DataReader对象或DataSet对象缓存数据。使用各种数据控件,如用DataGridView控件显示数据。,ADO.NET对象(1)Connection对象Connection对象用于连接数据库。不同的数据有不同的Connection对象。要连接OLEDB数据源或SQLServer7.0以前版本数据库,可以使用OLEDB.NETFramework数据提供程序的OleDbConnection对象,要连接SQLServer7.0及以上版本数据库,可以使用SQLServer.NETFramework数据提供程序的SqlConnection对象。所有的连接方式都要用到连接字符串,连接字符串是一串字符,它是分号隔开的多项信息,对于不同的数据库和供应程序,连接字符串的内容也不同。可以用“连接向导”来生成这种连接字符串。,下面列出了访问数据库的典型的连接字符串:连接SQLServer数据库,使用SQLServerProvider“DataSource=(local);InitialCatalog=Northwind;IntegratedSecurity=True”(2)连接Access数据库,使用Microsoft.Jet.OLEDB.4.0“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:08-09-1C#备课数据库操作dbPriceManagement.mdb”OleDbConnection的两个重要方法:.Open()方法:打开与数据库表的连接。例:myConn.Open();.Close()方法:关闭与数据库表的连接。例:myConn.Close();,数据源配置图示:,ADO.NET对象()Command对象Command对象主要用业向数据库发出各种SQL命令,例如:查询、插入、修改和删除等命令。根据所用的.NETFramework数据提供的程序不同,有不同的Command对象与之对应。这些Command对象分别是SqlCommand对象、OleDbCommand对象、OdbcCommand对象和OracleCommand对象。应根据访问的数据源不同,选择相应的Command对象。,创建Command对象的语法:DimobjComasNewOleDbCommand()AccessDimobjComasNewSqlCommand()SQLServe其属性:CommandText:获取或设置将要对数据源执行的SQL命令、存储过程名称或数据表名称,如:下面的代码可以用来指定Command对象所要执行的SQL命令。Connection:获取或设置Command对象所要使用的数据连接。例如:OleDbCommandinst=newOleDbCommand(“Deletefrombookwhereid=1002”,myConnection1),如果是使用存储过程来对数据源进行操作,应该把CommandType属性设置为StoreProcedure,同时把CommandText属性设置为存储过程的名字。如果存储过程使用参数,可以使用Command对象的Parameters属性来访问存储过程的输入和输出参数及返回值。执行SQL语句,Command对象公开了几个可用于执行所需操作的Execute方法:当以数据流的形式返回结果时,使用ExecuteReader可返回DataReader对象。使用ExecuteScalar可返回执行结果第一列第一栏的值。使用ExecuteNonQuery可执行返回被影响的行数。例如:inst.ExecuteNonQuery();/,Command对象支持下面4种实例化对象:SelectCommand引用某命令(SQL语句或存储过程名称)从数据存储区检索行。InsertCommand引用某命令以便向数据存储区插入行。UpdateCommand引用某命令以便修改数据存储区中的行。DeleteCommand引用某命令以便修改从数据存储区删除行。上述4种实例化对象都支持包含对SQL语句或存储过程引用的CommandText属性。,例:使用SQL语句完成对MicrosoftAccess某数据库的某数据表的查询、显示操作。privatevoidDisplay()/显示数据表中的第一条记录stringmyConStr=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=E:08-09-1C#备课数据库操作dbPriceManagement.mdb;OleDbConnectionmyCon=newOleDbConnection(myConStr);myCon.Open();/创建Command对象OleDbCommandmyCom=newOleDbCommand();/指定使用SQL语句myCom.CommandType=CommandType.Text;,/SQL语句内容是检索信息stringcomstr=selectBrand,Modal,LowestPrice,HighestPricefromT_BaseInfo;myCom.CommandText=comstr;/使用myCon连接对象myCom.Connection=myCon;/由Command对象的ExecuteReader方法生成的OleDBDataReader对象OleDbDataReadermyReader=myCom.ExecuteReader();myReader.Read();this.txtBrand.Text=myReader.GetString(0);this.txtModal.Text=myReader.GetString(1);this.txtLowestPrice.Text=myReader.GetDouble(2).ToString();,this.txtHighestPrice.Text=myReader.GetDouble(3).ToString();/关闭OleDBDataReader对象myReader.Close();/关闭OleDBDataConnection对象myCon.Close();,数据表如下图所示:,程序运行如图所示:,ADO.NET对象()DataReader对象ADO.NET有两种访问数据源的方式,分别为DataReader对象和DataSet对象。前者是高度优化的对象,专门以向前方式只读记录而设计。后者是记录在内存中的缓存,可以从任何方向随意访问和修改。DataReader对象是用来读取数据源最简单的方式,它只能读取数据,不能写入数据,而且是将数据源从头至尾依次读出,无法只读某条数据。由于每次只能从DataReader对象依次读取一条数据,占用的内存空间很小,所以应用程序的效率较佳,系统负担较轻,其主要缺点是灵活性差。,使用DataReader对象读取数据库的步骤如下:、使用Connection对象创建数据连接,OLEDB兼容数据库需使用OleDbConnection对象,SQLServer7.0或更新的版本需使用SqlConnection对象。、使用Command对象对数据源执行SQL命令并返回结果,OLEDB兼容数据库需使用OleDbCommand对象,SQLServer7.0或更新的版本需使用SqlCommand对象。、使用DataReader对象读取数据据,OLEDB兼容数据库需使用OleDbDataReader对象,SQLServer7.0或更新的版本需使用SqlDataReader对象。,注意:DataReader对象是通过Command对象的ExecuteReader方法从数据源中检索行创建的。要想获得DataReader对象中的数据,必须组合使用DataReader的Read方法和相应的Get方法。使用DataReader对象的Read方法可以读取下一条数据并返回布尔值,True表示下一条数据。通过向DataReader传递列的名称(GetName(ordinal)或序号(GetOrdinal(name)引用,可以访问的每一列(GetValue(ordinal),并且序号从开始,请见上例。,ADO.NET对象()DataAdapter(数据适配器)对象它的作用主要是在数据库与DataSet对象之间传递数据。例如在Command对象发出查询命令后,将获取的数据放入DataSet对象中。.NETFramework提供两种主要的数据数据适配器以供与数据库一起使用。OleDbDataAdapter,它适用于由OLEDB提供程序公开的任何数据源。SqlDataAdapter,它适用于SQLServer。由于该对象不必通过OLEDB层,所以它比OleDbDataAdapter快,但只能用于SQLServer7.0或更高版本。,DataAdapter对象使用Fill()方法将数据从数据源装载到数据集中。该方法使用DataAdapter的SelectCommand的结果来填充DataSet,方法如下:DataAdapter对象.Fill(DataSet)将数据源的记录填充到DataSet中,或者使用如下形式:DataAdapter对象.Fill(DataSet,TableName)用给定的表中的记录填充DataSet,TableName是指从来源表映射到DataSet中表的名字。,使用Fill方法时,如果仅指定一个放置结果的DataSet,那么系统将自动在DataSet中创建一个新的DataTable对象,此DataTable对象可以通过下标值加以访问,如:daCurrent.Fill(dsCurrent)DataGrid1.DataSource=dsCurrent.Tables(0)其中,Tables属性返回DataSet中的DataSet对象的集合。Tables集合中的每一个对象的数据类型都是DataTable。当然,为了方便以后的访问,在Fill方法中再提供一个字符串,为所创建的DataTable指定一个名字,这样编写的程序代码更具有可读性且容易维护,因为完全可以利用DataTable的名字访问而不是利用它的下标。下面的两行代码和上面的两行的含义是一样的:daCurrent.Fill(dsCurrent,“Info”)DataGrid1.DataSource=dsCurrent.Tables(“Info”),ADO.NET对象()DataSet对象DataSet是ADO.NET的核心,是一个数据集,主要用来存放从数据库中取回的数据,用于支持ADO.NET中的离线数据访问。DataSet对象是一种非连接的数据缓存,就像是一个被复制到内存中的小关系数据库。它的结构与真正的数据库十分相似,可以把子DataSet想像成内存中的数据库,DataSet对象表示了数据库中完整的数据,包括表和表之间的关系等。当使用DataAdapter的Fill方法,将所连接数据库中的数据放入DataSet对象之后,与数据库的连接即断开。此时,在应用程序中将直接从DataSet对象中读取数,不再依赖于数据库了。当在DataSet上完成所有的处理操作后,再将对数据的更改传回数据源。这样,在多用户共同存取的网络系统中,可有效降低数据库服务器的负担,提高数据存取的效率。,其命令格式为:DataSet对象名=newDataSet();例:DataSetmyDataSet=newDataSet();DataSet对象模型较为复杂,为了能较好地理解DataSet对象的结构,下面给出DataSet对象的简要结构图在DataSet对象中有许多属性,其中最重要的是Tables属性和Relations属性。Tables属性值是一个DataTable对象集,每个DataTable对象代表了数据库中的一个表。每个DataTable数据表都由相应的行和列所组成。所以,一个DataTable对象都有两个重要的属性:Columns属性和Rows属性。Columns属性值是一个数据表的DataColumn对象集,每一个DataColumn对象代表数据表中的每个列;而Rows属性值是一个数据表的DataRow对象集,每个DataRow对象代表了数据表中的一行数据。可以直接使用这些对象访问数据集中的数据。,此外,DataSet对象还有一个Relations属性,该属性值是DataRelation对象集,每个DataRelation对象表达了数据表之间的关系。当创建了DataSet对象,并将数据库中的数据放入DataSet对象之后,就可以在离线的状态下使用DataSet对象、DataTable对象、DataColumn对象和DataRow对象所提供的方法,对DataSet对象中的数据进行添加、修改、删除等各种处理和操作。当对DataSet对象的数据表完成所有的处理和操作之后,可以使用前面DataAdapter对象中的UpDate方法,更新源数据库,任何修改过的记录都可以在源数据库上更新,任何新添加的记录也都可以添加到源数据库相应的数据表中。,例:调用DataAdapter对象的Fill方法填充数据集。首先,创建DataAdapter的一个实例,该实例使用MicrosoftSQLServerNorth数据库的employee数据表来填充DataSet;然后,删除该表中的一条记录,并刷新DataSet和数据源。,privatevoidTestDataBase()stringstrConn=DataSource=(local);InitialCatalog=Northwind;IntegratedSecurity=True;SqlConnectioncon=newSqlConnection(strConn);stringstrComm=SelectLastName,FirstNamefromEmployees;SqlCommandcom=newSqlCommand(strComm,con);/声明DataAdapter对象SqlDataAdaptermyDa=newSqlDataAdapter();/要求DataAdapter对象执行SQL检索命令myDa.SelectCommand=com;con.Open();,DataSetmyDs=newDataSet();/执行SQL命令,并填充数据集myDa.Fill(myDs,EmployeeInfo);/要求DataAdapter执行SQL删除命令com.CommandText=DeletefromEmployeeswhereEmployeeID=9;myDa.DeleteCommand=com;/刷新数据集myDa.Fill(myDs,EmployeeInfo);con.Close();,数据绑定控件Windows窗体数据需要绑定,如果用户使用DataGridView控件,则需要使DataGridView控件和数据库控件进行绑定。从工具箱的Windows窗体栏中,将一个DataGridView控件拖到窗体上。选择该控件,修改其属性DataSource属性为所选的数据库,即完成了显示控件和数据库的绑定。即使在填充数据采集后,DataGridView控件中才显示数据,此时编程人员可以另加一个控件以激活显示绑定。也可以在源程序代码中调用DataGridView控件的相应方法,将该控件绑定到数据集。,综合实例:利用SQL语句录入数据,开始界面,点击添加菜单,添加信息,usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespaceEx09_15publicpartialclassForm1:FormSqlConnectioncon=newSqlConnection(DataSource=(local);InitialCatalog=db_09;IntegratedSecurity=True);publicForm1()InitializeComponent();,privatevoidForm1_Load(objectsender,EventArgse)ControlInfo(false);showinfo();privatevoidshowinfo()using(SqlDataAdapterda=newSqlDataAdapter(select*from员工表,con)DataTabledt=newDataTable();da.Fill(dt);DataViewdv=newDataView(dt);this.dataGridView1.DataSource=dv;,privatevoidtbADD_Click(objectsender,EventArgse)ControlInfo(true);this.tbSave.Enabled=true;this.tbADD.Enabled=false;privatevoidControlInfo(BooleanB)foreach(Controlctinthis.groupBox1.Controls)if(ctisTextBox)ct.Text=;if(B)ct.Enabled=true;elsect.Enabled=false;,privatevoidtbSave_Click(objectsender,EventArgse)StringBuilderstrSQL=newStringBuilder();strSQL.Append(insertinto员工表(员工编号,员工姓名,基本工资,工作评价);strSQL.Append(values(+textBox1.Text.Trim().ToString()+,+textBox2.Text.Trim().ToString()+,);strSQL.Append(+Convert.ToSingle(textBox4.Text.Trim().ToString()+,+textBox5.Text.Trim().ToString()+);using(SqlCommandcmd=newSqlCommand(strSQL.ToString(),con)con.Open();cmd.ExecuteNonQuery();MessageBox.Show(OK);ControlInfo(false);con.Close();showinfo();strSQL.Remove(0,strSQL.Length);this.tbSave.Enabled=false;this.tbADD.Enabled=true;,ADO.NET编程技术小节,、连接数据库SqlConnection类设置连接参数创建SQLServer连接断开SQLServer连接、与数据库交互使用SqlCommand提交增删改命令使用SqlCommand获取查询命令使用DataAdapter提交查询命令,、管理内存数据使用DataSet实现内存表使用DataReader获取只读数据,9.3.3ADO.NET编程及绑定1.数据集编程在ADO.NET中,建立连接后就需要使用数据命令打包SQL语句或存储过程。如果是使用SELECT语句查询数据库,调用命令的执行方法后将返回查询结果,同时将数据缓存到数据集中,用户可使用数据集获取这些行;如果是调用Update命令,则将返回所影响的行数;其他类型的命令将返回一个错误代码。,在ADO.NET中,数据集就是临时存储从数据库检索的记录,是从数据源检索的记录的缓存,数据集中可包含一个或多个表,这些表基于实际数据库中的表。因为数据集实际上是数据库的私有副本,所以它不一定反映数据库的当前状态。如果想要查看其他用户进行的最新更改,可以通过调用适当的Fill()方法刷新数据集。SQL命令主要有SELECT、INSERT、UPDATE、DELETE。,2.数据绑定Windows窗体的数据绑定便于在窗体控件中显示数据,如果使用DataGrid控件,则需要使用DataGrid控件进行绑定。主要通过Fill()方法。,例:,其中窗体的“Load”事件代码为:privatevoidForm1_Load(objectsender,System.EventArgse)trystringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:book.mdb;OleDbConnectionmyConn=newOleDbConnection(strCon);stringstrCom=SELECT*FROMbookorderby编号;myConn.Open();OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);myDataSet=newDataSet();myCommand.Fill(myDataSet,book);this.dataGrid1.DataSource=this.myDataSet.Tablesbook;myConn.Close();catch(Execptionx)MessageBox.Show(“错误!”+x.ToString(),“error”);,其中“查询”按钮的“单击”事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse)trystringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:book.mdb;OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom=“SELECT*FROMbookWHERE书名Like%+this.textBox1.Text+%;OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);this.myDataSet.Clear();myCommand.Fill(myDataSet,book);myConn.Close();catch(Execptionx)MessageBox.Show(“错误!”+x.ToString(),“error”);,其中“添加”按钮的“单击”事件代码为:privatevoidbutton2_Click(objectsender,System.EventArgse)trystringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:book.mdb;OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom=INSERTINTObook(编号,书名,作者,价格,书架号)VALUES(+this.textBox2.Text+,+this.textBox3.Text+,+this.textBox4.Text+,+this.textBox5.Text+,+this.textBox6.Text+);OleDbCommandinst=newOleDbCommand(strCom,myConn);inst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter(SELECT*FROMbookorderby编号,myConn);myDataSet.Clear();myCommand.Fill(myDataSet,book);myConn.Close();catch(Exceptionx)MessageBox.Show(错误+x.ToString(),error);,其中“删除”按钮的“单击”事件代码为:privatevoidbutton3_Click(objectsender,System.EventArgse)tryinta=this.dataGrid1.CurrentCell.RowNumber;stringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:book.mdb;OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom=“DELETEFrombookwhere编号=strCom+=this.myDataSet.Tables0.Rowsa0;OleDbCommanddelst=newOleDbCommand(strCom,myConn);delst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter(SELECT*FROMBookorderby编号,myConn);myDataSet.Clear();myCommand.Fill(myDataSet,book);myConn.Close();catch(Exceptionx)MessageBox.Show(错误+x.ToString(),error);,其中“修改”按钮的“单击”事件代码为(这里一次只能修改一行):privatevoidbutton4_Click(objectsender,System.EventArgse)tryinta=this.dataGrid1.CurrentCell.RowNumber;stringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:book.mdb;OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom=“UPDATEbookset书名=“+this.myDataSet.Tables”book“.Rowsa1+”,作者=“+this.myDataSet.Tables”book“.Rowsa2+”,价格=“+this.myDataSet.Tables”book“.Rowsa3+”,书架号=“+this.myDataSet.Tables”book“.Rowsa4+”where编号=+this.myDataSet.Tablesbook.Rowsa0;OleDbCommandinst=newOleDbCommand(strCom,myConn);inst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter(SELECT*FROMbookorderby编号,myConn);this.myDataSet.Clear();myCommand.Fill(myDataSet,book);myConn.Close();catch(Exceptionx)MessageBox.Show(错误+x.ToString(),error);,“修改”多行按钮的“单击”事件代码为:privatevoidbutton2_Click(objectsender,System.EventArgse)trystringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;Datasource=F:student.mdb;OleDbConnectionmyconn=newOleDbConnection(strCon);stringupstr;OleDbCommandinst;myconn.Open();inta=this.myDataSet.Tables0.Rows.Count;this.textBox1.Text=a.ToString();for(inti=0;ia;i+)upstr=“updatestudentset姓名=”+this.myDataSet.Tables0.Rowsi1;upstr+=“,语文=”+this.myDataSet.Tables0.Rowsi2+“,数学upstr+=“,数学=”+this.myDataSet.Tables0.Rowsi3+“,英语upstr+=“,英语=”+this.myDataSet.Tables0.Rowsi4+“where学号upstr+=“where学号=+this.myDataSet.Tables0.Rowsi0+;inst=newOleDbCommand(upstr,myconn);inst.ExecuteNonQuery();stringstrcom=SELECT*FROMstudent;OleDbDataAdaptermycommand=newOleDbDataAdapter(strcom,myconn);myDataSet.Clear();mycommand.Fill(myDataSet,student);myconn.Close();catch(Exceptionx)MessageBox.Show(error!+x.ToString();,“统计”平均分、总分的按钮的“单击”事件代码为:privatevoidbutton1_Click(objectsender,System.EventArgse)trystringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:student.mdb;OleDbConnectionmyconn=newOleDbConnection(strCon);stringupstr=updatestudentset总分=语文+数学+英语,平均分=(语文+数学+英语)/3;myconn.Open();OleDbCommandinst=newOleDbCommand(upstr,myconn);inst.ExecuteNonQuery();stringstrcom=SELECT*FROMstudent;OleDbDataAdaptermycommand=newOleDbDataAdapter(strcom,myconn);myDataSet.Clear();mycommand.Fill(myDataSet,student);myconn.Close();catch(Exceptionx)MessageBox.Show(error!+x.ToString();,作业:根据以上两例的界面和代码,实现其中一例。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!