您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 数据库系统开发实验三
2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师实验报告姓名:学号:班级:实验:订单管理时间:2017年9月28日2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师1目录一、实验目的(通过实验要达到什么样的效果,学到什么东西)二、实验条件(实验使用软件)三、实验内容(实验需要做的具体详细的实验项目)四、实验要求(实验中,我们要注意的实验事项和写实验报告的详细要求)五、实验步骤(实验步骤包括具体的每个实验的实验方法、实验结果和实验结果分析,按照每步遇到的问题,进行分析解决)六、实验感悟(总结实验中遇到的问题,以后该怎么解决)2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师2一、实验目的学习数据库应用程序的开发和实现部分功能(查询、插入、删除、更新和保存等)二、实验条件MicrosoftSQLServerManagementStudioMicrosoftVisualStudioWindows8C#编程语言三、实验内容编程实现示例数据库中订单明细SalesOrderDetail的查询、插入、更新与删除功能如下:(1)查询功能。程序运行后,订单表中显示所有订单,第一个订单为当前订单,订单明细表中显示当前订单的所有订单明细。当前订单发生改变时(即点击订单表中的某个订单埋),订单明细表中的内容发生相应的变化。(2)删除功能:选取订单明细中的一行,点击删除,选择的订单明细从表中删除,但并不真正从数据库中删除。(3)插入功能:可以在订单明细表的最后输入新的订单明细。(4)更新功能:可以修改订单明细表中的某一行的内容。如果输入的单价(UnitPrice)大于产品的公开报价,则提示相应的信息(利用4.6.2的触发器完成此功能)。(5)保存功能:点击保存按钮时,将订单明细保存到数据库。(6)关闭功能:点击关闭按钮时,如果订单明细有修改但没有保存,则提示是否关闭,如果不关闭则返回,否则关闭程序,如果没有修改,则直接关闭。四、实验要求1.订单查询实验要求使用ADO.NET并任选一种程序设计语言进行编程。实验报告需要说明所采用的方法、结果和总结(结果分析)。实验方法部分说明采用的开发环境,包括操作系统、数据库管理系统及其版本、编程工具及其版本、和编程语言。如果使用ADO.NET则在实验方法部分回答下面的问题:(1)使用哪种数据提供程序?(2)使用的数据连接对象是哪一个?连接对象是如何建立的?最后生成的连接对象中的连接字符串是什么?代表什么含义?(3)使用的数据适配器对象是什么?其中的查询或更新语句是什么?如果有参数则参数是如何处理的?(4)使用的数据集对象是什么?数据集中有哪些数据表?数据表是由哪些适配器对象生成的?(或采用其它方法)。实验方法中还需要给出手工添加的代码及对代码的说明。实验结果部分给出程序运行的界面和操作的简单说明。总结部分对实验过程中出现的总是进行分析,同时提出所开发的程序还有哪些可以改进的地方。2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师3五、实验步骤实验方法:回答实验要求中的实验问题(1)使用哪种数据提供程序?答:OLEDB类数据。(2)使用的数据连接对象是哪一个?连接对象是如何建立的?最后生成的连接对象中的连接字符串是什么?代表什么含义?答:连接对象oleDbConnection1数据适配器:oleDbDataAdapter1和oleDbDataAdapter2oleDbDataAdapter1Provider=SQLNCLI11(客户端组件,代表一个驱动)DataSource=LENOVO-PC(代表数据源是LENOVO-PC)Security=SSPI(代表以window用户登录服务器)InitialCatlog=AdventureWorks(代表连接数据库为AdventureWorks)oleDbDataAdapter2Provider=SQLNCLI11(客户端组件,代表一个驱动)DataSource=LENOVO-PC(代表数据源是LENOVO-PC)Security=SSPI(代表以window用户登录服务器)InitialCatlog=AdventureWorks(代表连接数据库为AdventureWorks)(3)使用的数据适配器对象是什么?其中的查询或更新语句是什么?如果有参数则参数是如何处理的?答:oleDbDataAdapter1:1)查询语句:SELECTSalesOrderID,OrderDate,DueDate,ShipDate,Status,SalesOrderNumberFROMSales.SalesOrderHeader2)没有参数OleDbDataAdapter2:1)查询语句:SELECTSalesOrderID,SalesOrderDetailID,CarrierTrackingNumber,OrderQty,ProductID,SpecialOfferID,UnitPrice,UnitPriceDiscount,LineTotal,rowguid,ModifiedDateFROMSales.SalesOrderDetail2)没有参数(4)使用的数据集对象是什么?数据集中有哪些数据表?数据表是由哪些适配器对象生成的?(或采用其它方法)。答:dataSet11-SalesOrderHeader表-oleDbDataAdapter1dataSet21-SalesOrderDetail表-oleDbDataAdapter22017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师41.基本框架设计介绍1.1新建一个项目客户管理4.0,选择的参数如下1.2打开新建的项目客户管理4.01.3窗口进行如下图所示的设计订单:使用dataGridView创建,名字设置为dataGridView1Datasource:dataSet11Datamember:SalesOrderHeader订单明细:使用datagridview创建,名字设置为dataGridView2Datasource:dataSet212017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师5Datamember:SalesOrderDetailoleDbConnection1:连接数据库AdventureWorksoleDbDataAdapter1-dataSet11oleDbDataAdapter2-dataSet21填充dataGrid控件:dataGridView1和dataGridView2privatevoidForm1_Load(objectsender,EventArgse){oleDbDataAdapter1.Fill(dataSet11);oleDbDataAdapter2.Fill(dataSet21);}1.4数据库环境设置连接SQLServer中的默认数据库AdventureWorks2.查询功能的实现2.1实现功能代码privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){stringmsg=dataGridView1[e.ColumnIndex,e.RowIndex].Value.ToString();StringstrCustomerDelete=Select*FROMSales.SalesOrderDetailWHERESalesOrderID=+msg;Console.Write(strCustomerDelete);oleDbDataAdapter2.SelectCommand.CommandText=strCustomerDelete;this.dataSet21.Clear();//刷新this.oleDbDataAdapter2.Fill(this.dataSet21);//填充}2.2查询SalesOrderID=43661的所有订单明细3.删除功能的实现3.1实现功能代码3.2如图删除SalesOrderID=43661,SalesOrderDetailID=15的订单,结果如下点击43661后查询结果如下2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师6选择43661中SalesOrderDetailID=15的一行并点击删除按钮,则删除这行数据,如下图所示:4.插入功能的实现4.1实验指导书中已经给出介绍,SalesOrderDetail的rowguid列是一个uniqueidentifier类型,不允许空值。手工输入该值比较困难,可以使用程序进行处理。即手工输入时不输入该值,保存到数据库之前由程序生成该列的值。2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师74.2如下图在SalesOrderID=43661的订单明细的最下方添加一行新的订单没有插入新的订单之前的位置插入如图所示的新订单信息5.更新功能的实现5.1在AdventureWorks数据库中创建表Production.ProductUpdateLog,用来记录订单2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师8编号、订单明细编号、产品编号、产品的公开报价、修改前产品的单价、修改后产品的单价、修改者的登录名SQL语句如下:CREATETABLEProduction.ProductUpdateLog(记录编号intIDENTITYPRIMARYkey,---保证编号唯一,且随插入数据的数据逐一递增订单编号intnotnull,订单明细编号intnotnull,产品编号intnotnull,产品的公开报价money,修改前产品的单价money,修改后产品的单价money,修改者的登录名varchar(30)notnull)GO创建的表如下图所示:5.2创建名为Product.ProductUpdateCheck的存储过程,来向表Production.productUpdateLog中插入数据,实现代码如下USEAdventureWorksGOIFOBJECT_ID('Production.Record_Update_Price','P')ISNOTNULLDROPPROCEDUREProduction.Record_Update_PriceGO--如果数据库中存在名称为Production.Record_Update_Price的存储过程--则删除该存储过程--创建存储过程Production.Record_Update_Price,它有个参数,--其中@SalesorderID表示订单编号,@SalesorderdetailID表示订单明细编号--@ProductID表示产品编号,@PublicPrice表示公开报价--@PrePrice表示修改前价格,@PostPrice表示修改后报价--@Operator表示修改者登录名2017年9月8日大三暑假小学期数据库系统开发--郭贵锁老师9CREATEPROCEDUREProduction.Record_Update_Price--@RecordIDint,--因为表格ProductUpdateLog的主键设为IDENTITY性质,不用传参@SalesorderIDint,@SalesorderdetailIDint,@ProductIDint,@PublicPricemoney,@PrePricemoney,@PostPricemoney,@Operatornvarchar(50)AS--向表ProductUpdateLog插入一条记录,参数纷纷对应INSERTINTOProduction.ProductUpdateLog(--记录编号,订单编号,订单明细编号,产品编号,产品公开报价,修改前产品单价,修改后产品单价,修改者登录名)VALUES(--@RecordID,@SalesorderID,@SalesorderdetailID,@Product
本文标题:数据库系统开发实验三
链接地址:https://www.777doc.com/doc-4605255 .html