网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.如何在VB中实现目录遍历.
.VB利用高级音频函数编写多媒体播.
.VB中使用数据窗体设计器插件.
.如何将整个画面暗下来,如同关机.
.在VisualBasic中使用Rundll32.ex.
.VB中OLE调用的优化方法.
.重启Windows2000/NT系统.
.VB开发通讯软件.
.获得、设置鼠标双击间隔.
.VB创建、修改、删除WIN2K用户.
.SQL的基本操作(3.表的相关操作).
.VisualBasic可以产生四角形以外其.
.用VB开发应用程序如何使用INI文件.
.数据报表设计器在多层结构开发的.
.VB游戏写作技巧(1)秀图篇.
.VB软件开发中的错误捕获及处理技.
.加强客户端约束增强数据库完整性.
.VB与大型数据库无数据源的连接.
.在VB中控制Word.
.用VB实现在程序运行时使系统日期.

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

发表日期:2006-2-27


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方法,结果很类似。

->

上一篇:VB中的处理问题 人气:3396
下一篇:简单计算函数的编写过程 人气:3842
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐