VB中访问存储过程的几种办法_VB.net_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

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

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

本篇关键词:办法过程存储访问
黑客防线网安网讯:使用SQL存储过程有什么好处■SQL存储过程执行起来比SQL命令文本快得多。当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。■调用存储过程,可以认为是一个三层结...

使用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

->

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

footer  footer  footer  footer