VB中调用带参数存储过程的实现_VB.net_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

VB中调用带参数存储过程的实现

作者:黑客防线网安VB教程基地 来源:黑客防线网安VB教程基地 浏览次数:0

本篇关键词:过程实现存储参数
黑客防线网安网讯:VB做为快速应用开发(RAD)工具越来越得到开发人员的认可和接受。它对许多API(如ODBCAPI、SOCKETAPI等等)的封装使得编程变得简单起来。同时,它支持集成开发环境下的可视化、事件驱动、面...
VB做为快速应用开发(RAD)工具越来越得到开发人员的认可和接受它对许多API(如ODBCAPI、SOCKETAPI等等)的封装使得编程变得简单起来同时它支持集成开发环境下的可视化、事件驱动、面向对象等编程特点。下面我们谈谈在VB中调用存储过程的实现方法及其注意事项。

----我们知道,VB的数据库编程有许多种方法,比如直接用ODBCAPI编程,这种方法灵活、高效,程序员可以实现对数据库复杂的控制;也可以用VB中的数据对象,如RDO(远程数据对象)、DAO(数据访问对象)、ADO(ActiveX数据对象),这种方法实现起来方便、快捷,但灵活性较差一些。由于存储过程在实现数据封装、隐藏以及代码的预编译、减少网络负载、维护方便等优点,所以被许多RDBMS和编程工具做支持。VB中的各类数据对象也提供对存储过程的支持。

----我们以ADO为例来说明其实现的步骤

----1.创建、调试存储过程。你可以在数据库中也可以在其他外挂程序的支持下进行存储过程的创建和调试工作。本例中的存储过程代码如下(使用PUBS的MSSQL中的例子库):

CREATEPROCEDUREmyprocedure
  @job_idsmallint,
  @job_lvltinyint
  AS
  SELECT*
  FROMemployee
  WHEREjob_id<@job_id
  ANDjob_lvl>@job_lvl
  

----2.在VB中生成一个新的工程,工程有一窗体,一个COMMAND(NAME:COMMAND1)按钮,一个MSFlexGrid(NAME:MSFlexGrid1)控件。

----3.创建连接ADOconnection;

----4.创建命令ADOcommand;

----5.创建参数并设置各个参数的属性;

----6.执行ADOcommand;

----7.对数据进行处理;MSFlexGrid显示查询到的数据

----8.释放连接,退出程序。

----其中代码如下:

在窗体中声明以下变量:
  Dimcnn1AsADODB.Connection‘连接
  DimmycommandAsADODB.Command‘命令
  Dimparm_jobidAsADODB.Parameter‘参数1
  Dimparm_joblvlAsADODB.Parameter‘参数2
  DimrstByQueryAsADODB.Recordset‘结果集
  DimstrCnnAsString‘连接字符串
  
  在窗体的LOAD事件中加入如下代码:
  Setcnn1=NewADODB.Connection
  ‘生成一个连接
  strCnn="DSN=MYDSN;uid=sa;pwd="
  ‘创建的系统数据源MYDSN指向PUBS数据库
  cnn1.OpenstrCnn‘打开连接
  在窗体的UNLOAD中的加入代码如下:
  cnn1.Close‘关闭连接
  Setcnn1=Nothing‘释放连接
  
  在按钮中的代码如下:
  DimIAsinteger
  Dimjasinteger
  Setparm_jobid=NewADODB.Parameter
  Setmycommand=NewADODB.Command
  'parm_jobid.Name="name1"
  thislinecanbeommited
  parm_jobid.Type=adInteger‘参数类型
  parm_jobid.Size=3‘参数长度
  parm_jobid.Direction=adParamInput
  ‘参数方向,输入或输出
  parm_jobid.value=100‘参数的值
  mycommand.Parameters.Append
  parm_jobid‘加入参数
  
  
  Setparm_joblvl=NewADODB.Parameter
  ‘parm_joblvl.Name="name2"
  parm_joblvl.Type=adInteger
  parm_joblvl.Size=3
  parm_joblvl.Direction=adParamInput
  mycommand.value=100
  mycommand.Parameters.Appendparm_joblvl
  
  
  mycommand.ActiveConnection=cnn1
  ‘指定该command的当前活动连接
  mycommand.CommandText="myprocedure"
  ‘myprocedure是你要调用的存储过程名称
  mycommand.CommandType=adCmdStoredProc
  ‘表明command为存储过程
  SetrstByQuery=NewADODB.Recordset
  SetrstByQuery=mycommand.Execute()
  I=0
  DoWhileNotrstByQuery.EOF
  I=I 1‘I中保存记录个数
  rstByQuery.MoveNext
  Loop
  MSFlexGrid1.Rows=I 1
  ‘动态设置MSFlexGrid的行和列
  MSFlexGrid1.Cols=rstByQuery.Fields.Count 1
  MSFlexGrid1.Row=0
  ForI=0TorstByQuery.Fields.Count-1
  MSFlexGrid1.Col=I 1
  MSFlexGrid1.Text=rstByQuery.Fields.Item(I).Name
  Next‘设置第一行的标题,用域名填充
  
  I=0
  SetrstByQuery=mycommand.Execute()
  DoWhileNotrstByQuery.EOF
  I=I 1
  MSFlexGrid1.Row=I‘确定行
  Forj=0TorstByQuery.Fields.Count-1
  MSFlexGrid1.Col=j 1
  MSFlexGrid1.Text=rstByQuery(j)
  ‘添充所有的列
  Next
  rstByQuery.MoveNext
  
  Loop‘这个循环用来填充MSFlexGrid的内容
  
  

----特殊说明

----1.Setrecordset=command.Execute(RecordsAffected,Parameters,Options)command.ExecuteRecordsAffected,Parameters,Options这是command的两种用法,一种有返回结果集,一种没有返回结果集。

----RecordsAffected:是指用update、delete操作时所影响的结果,对select的查询,其值为-1;这和在Mssqlserver中的QueryAnalyzer中的不一样。QueryAnalyzer中,select、update、delete的结果显示的是实际查、改、删的记录数。

----Options:指明command的类型,有adCmdText、adCmdTable、adCmdStoredProc等等,用户可见MSDN。

----2.在参数的类型中,用户可以用varchar来代替integer,系统会帮你自动实施转化;

----3.本例中仅为带输入参数的存储过程,如果要有输出参数,根据MSDN的材料,用ADO不行。你可以用RDO数据对象,MSDN中有一个例子,此处不做过多赘述;

----4.可以不用ADOCOMMAND对象,也可直接调用ADOCONNECTION的execute方法,结果很类似。

->

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14555-1.html
网站维护教程更新时间:2012-04-03 01:09:10  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer