网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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,移动开发
本月文章推荐
.VisualBasic编程输入时,自动转换.
.在关机或Logff前信息的拦截.
.用MCI指令进行多媒体编程.
.VBCOM基础讲座之全面测试.
.VisualBasic实现在程序中开启网页.
.如何将整个画面暗下来,如同关机.
.VB图像处理之图像的亮度对比度调.
.使用VisualBasic访问数据库几个注.
.关于VisualBasic6.0类开发(下).
.VBScript变量.
.用VB函数Dir实现递归搜索目录.
.如何取得中英混合字符串的长度.
.如何设定墙纸的显示方式?.
.用ParamArray接收任意个参数.
.播放flc文件动画.
.利用VB访问Internet.
.VB的坐标系统综述.
.用VB5.0创建Windows快捷方式.
.在VB6.0中使ACCESS数据库在网络使.
.VisualBasic窗体背景花纹的实现.

VB中访问存储过程的几种办法

发表日期:2006-2-27


使用SQL存储过程有什么好处

■SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。

■调用存储过程,可以认为是一个三层结构。这使你的程序易于维护。如果程序需要做某些改动,你只要改动存储过程即可

■你可以在存储过程中利用Transact-SQL的强大功能。一个SQL存储过程可以包含多个SQL语句。你可以使用变量和条件。这意味着你可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。

■最后,这也许是最重要的,在存储过程中可以使用参数。你可以传送和返回参数。你还可以得到一个返回值(从SQLRETURN语句)。

环境:WinXP VB6 sp6 SqlServer2000

数据库:test

表:Users

CREATETABLE[dbo].[users](

[id][int]IDENTITY(1,1)NOTNULL,

[truename][char](10)COLLATEChinese_PRC_CI_ASNULL,

[regname][char](10)COLLATEChinese_PRC_CI_ASNULL,

[pwd][char](10)COLLATEChinese_PRC_CI_ASNULL,

[sex][char](10)COLLATEChinese_PRC_CI_ASNULL,

[email][text]COLLATEChinese_PRC_CI_ASNULL,

[jifen][decimal](18,2)NULL

)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]

GO

ALTERTABLE[dbo].[users]WITHNOCHECKADD

CONSTRAINT[PK_users]PRIMARYKEYCLUSTERED

(

[id]

)ON[PRIMARY]

GO

存储过程select_users

CREATEPROCEDUREselect_users@regnamechar(20),@numrowsintOUTPUT

AS

Select*fromusers

SELECT@numrows=@@ROWCOUNT

if@numrows=0

return0

elsereturn1

GO

存储过程insert_users

CREATEPROCEDUREinsert_users@truenamechar(20),@regnamechar(20),@pwdchar(20),@sexchar(20),@emailchar(20),@jifendecimal(19,2)

AS

insertintousers(truename,regname,pwd,sex,email,jifen)values(@truename,@regname,@pwd,@sex,@email,@jifen)

GO

在VB环境中,添加DataGrid控件,4个按钮,6个文本框

代码简单易懂。

‘引用microsoftactivedataobject2.Xlibrary

OptionExplicit

DimmConnAsADODB.Connection

Dimrs1AsADODB.Recordset

Dimrs2AsADODB.Recordset

Dimrs3AsADODB.Recordset

Dimrs4AsADODB.Recordset

DimcmdAsADODB.Command

DimparamAsADODB.Parameter

'这里用第一种方法使用存储过程添加数据

PrivateSubCommand1_Click()

Setcmd=NewADODB.Command

Setrs1=NewADODB.Recordset

cmd.ActiveConnection=mConn

cmd.CommandText="insert_users"

cmd.CommandType=adCmdStoredProc

Setparam=cmd.CreateParameter("truename",adChar,adParamInput,20,Trim(txttruename.Text))

cmd.Parameters.Appendparam

Setparam=cmd.CreateParameter("regname",adChar,adParamInput,20,Trim(txtregname.Text))

cmd.Parameters.Appendparam

Setparam=cmd.CreateParameter("pwd",adChar,adParamInput,20,Trim(txtpwd.Text))

cmd.Parameters.Appendparam

Setparam=cmd.CreateParameter("sex",adChar,adParamInput,20,Trim(txtsex.Text))

cmd.Parameters.Appendparam

Setparam=cmd.CreateParameter("email",adChar,adParamInput,20,Trim(txtemail.Text))

cmd.Parameters.Appendparam

‘下面的类型需要注意,如果不使用adSingle,会发生一个精度无效的错误

Setparam=cmd.CreateParameter("jifen",adSingle,adParamInput,50,Val(txtjifen.Text))

cmd.Parameters.Appendparam

Setrs1=cmd.Execute

Setcmd=Nothing

Setrs1=Nothing

EndSub

'这里用第二种方法使用存储过程添加数据

PrivateSubCommand2_Click()

Setrs2=NewADODB.Recordset

Setcmd=NewADODB.Command

cmd.ActiveConnection=mConn

cmd.CommandText="insert_users"

cmd.CommandType=adCmdStoredProc

cmd.Parameters("@truename")=Trim(txttruename.Text)

cmd.Parameters("@regname")=Trim(txtregname.Text)

cmd.Parameters("@pwd")=Trim(txtpwd.Text)

cmd.Parameters("@sex")=Trim(txtsex.Text)

cmd.Parameters("@email")=Trim(txtemail.Text)

cmd.Parameters("@jifen")=Val(txtjifen.Text)

Setrs2=cmd.Execute

Setcmd=Nothing

Setrs1=Nothing

EndSub

'这里用第三种方法使用连接对象来插入数据

PrivateSubCommand4_Click()

DimstrsqlAsString

strsql="insert_users'"&Trim(txttruename.Text)&"','"&Trim(txtregname.Text)&"','"&Trim(txtpwd.Text)&"','"&Trim(txtsex.Text)&"','"&Trim(txtemail.Text)&"','"&Val(txtjifen.Text)&"'"

Setrs3=NewADODB.Recordset

Setrs3=mConn.Execute(strsql)

Setrs3=Nothing

EndSub

'利用存储过程显示数据

‘要处理多种参数,输入参数,输出参数以及一个直接返回值

PrivateSubCommand3_Click()

Setrs4=NewADODB.Recordset

Setcmd=NewADODB.Command

cmd.ActiveConnection=mConn

cmd.CommandText="select_users"

cmd.CommandType=adCmdStoredProc

'返回值

Setparam=cmd.CreateParameter("RetVal",adInteger,adParamReturnValue,4)

cmd.Parameters.Appendparam

'输入参数

Setparam=cmd.CreateParameter("regname",adChar,adParamInput,20,Trim(txtregname.Text))

cmd.Parameters.Appendparam

'输出参数

Setparam=cmd.CreateParameter("numrows",adInteger,adParamOutput)

cmd.Parameters.Appendparam

Setrs4=cmd.Execute()

Ifcmd.Parameters("RetVal").Value=1Then

MsgBoxcmd.Parameters("numrows").Value

Else

MsgBox"没有记录"

EndIf

MsgBoxrs4.RecordCount

SetDataGrid1.DataSource=rs4

DataGrid1.Refresh

EndSub

'连接数据库

PrivateSubForm_Load()

SetmConn=NewConnection

mConn.ConnectionString="Provider=SQLOLEDB.1;PersistSecurityInfo=False;UserID=sa;InitialCatalog=Test;DataSource=yang"

mConn.CursorLocation=adUseClient'设置为客户端

mConn.Open

EndSub

'关闭数据连接

PrivateSubForm_Unload(CancelAsInteger)

mConn.Close

SetmConn=Nothing

EndSub

->

上一篇:在VB中使用水晶报表的一种简易编程方法 人气:4600
下一篇:如何利用VB编写NT服务程序 人气:5725
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐