资源描述:
《数据库原理(李芳芳)实验四数据库编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验四数据库编程实验目的和要求1.掌握存储过程的创建和使用2.掌握触发器的创建和使用3.掌握使用VB.NET访问数据库的方法实验内容1、创建和执行存储过程a)创建一个cust_select存储过程,执行该存储过程将从表中根据客户的cid检索客户的姓名、所在城市和折扣率。USECAPGOCREATEPROCEDUREcust_select(0customer_idchar(4),0customer_namevarchar(13)OUTPUT,@customer_cityvarchar(20)OUTPUT,@custoi
2、ner_discntrealOUTPUT)ASIFEXISTS(SELECTFROMcustomerswherecid=@customer_id)SELECT@customer_name=cname,@customer_city=city,@customer_discndiscntfromcustomerswherecid=@customer_idELSESELECT1Personnotfound!1b)执行以上定义的cust_select存储过程DECLARE@cusvarchar(13)DECLARE@cust_
3、cityvmrchmr(20)DECLARE@discntrealEXECUTEcust_select1cOOl1f@cust_nameoutput,@cust_cityoutput,@discntoutputSELECT1customer_name1,@cust_name,1city1,@cust_cityz1discount',@discnt问题:若要检索其他客户的信息,使用存储过程如何实现?c)编写一个存储过程,向customers表中插入一条记录,并显示提示信息。d)编写一个存储过程,根据用户输入的代理商的a
4、id统计该代理商的总销售额。2、创建和使用触发器a)在CAP数据库中的agents表上建立一个DELETE触发器agent_tril(使用CREATETRIGGER语句创建),使得在删除表agents中的记录的同时,自动检查orders表中是否有与该代理商相关的记录,如果存在相关记录,则取消删除。USECAPGOCREATETRIGGERagent_trilONagentsFORDELETEASdeclare@AgentIDchar(3)select0AgentID=(selectaidfromdeleted)IF(
5、SELECTCOUNT()FROMorderswhereorders•aid=@AgentID)>0BEGINDECLAREQErrorMessagevarchar(100)set@ErrorMessage=1YoucmnnotdeletetheagentinformAtionwiththeorderrecord.1+char(13)+1Thetransactionwillbecancelled1RATSERROR(@ErrorMessage,10,1)ROLLBACKTRANSACTIONENDb)在查询窗口中输入
6、以下语句验证触发器DELETEFROMagentsWHEREaid=a01c)在agents表中添加一条新纪录('a08','Rose;'NewYork8),再在查询窗口中输入以下语句验证DELETEFROMagentsWHEREaid=a081d)使川系统存储过程sp_helptext查看触发器agent_tril定义的信息USECAPEXECsp_helptextageGO3、使用VB.NET访问数据库a)编程实现与customers表的连接操作步骤:①新建VB.Net项目,设计好界面。園For.l::::::
7、:诸选择用户:②编写代码。双击窗体空白处,进入代码编辑窗口。编写代码时,可按以下思路进行编写。导入命名空间一定义所需变量(数据连接、数据适配器、数据集、连接字符串、SQL语句字符串)-给变量赋值一数据填充一将组合框和数据集联系起来。代码如下:ImportsSystem・Datei・SqlClientPublicClassFormlInheritsSystem・Windows・Forms・FormDimDimDimDimDim'导入命名空间SqlConnectionlAsNewSqlConnectionDataSet1
8、AsDataSet=NewDataSetSqlAdapaterlAsSqlDataAdeipterStrSqlAsStringStrConAsString'定义连接变量'定义数据集变量'定义数据适配器变量'定义SQL语句字符串变量'定义连接字符串变量System・0bjcct,ByVaicAsPrivateSubFormlLoad(ByVais