使用sql好处.docx

上传人:b****4 文档编号:11721743 上传时间:2023-03-31 格式:DOCX 页数:9 大小:18.65KB
下载 相关 举报
使用sql好处.docx_第1页
第1页 / 共9页
使用sql好处.docx_第2页
第2页 / 共9页
使用sql好处.docx_第3页
第3页 / 共9页
使用sql好处.docx_第4页
第4页 / 共9页
使用sql好处.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

使用sql好处.docx

《使用sql好处.docx》由会员分享,可在线阅读,更多相关《使用sql好处.docx(9页珍藏版)》请在冰豆网上搜索。

使用sql好处.docx

使用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=MSDASQL.1;PersistSecurityInfo=False;UserID=sa;DataSource=yang"

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

mConn.Open

EndSub

'关闭数据连接

∙PrivateSubForm_Unload(CancelAsInteger)

mConn.Close

SetmConn=Nothing

EndSub

vb调用存储过程的方法

0

推荐

假设有一个名为doc_ProcName存储过程,该存储过程有一个输入参数,一个输出参数。

  1)直接传递参数调用存储过程

  直接传递参数方法主要通过以下几个步骤来实现:

  

(1)通过ADODB的Connection对象打开与数据源的连接;

  

(2)通过ActiveConnection指定Command对象当前所属的Connection对象;

  (3)通过CommandText属性设置Command对象的源,即要调用的存储过程;

  (4)通过CommandType属性确定Command对象的源类型,如果源类型为存储过程CommandType即为adCmdStoredProc;

  (5)通过Command对象的Parameters集合向所调用的存储过程传递参数,其中对象Parameters(0)为执行存储过程的返回值,返回值为0则执行存储过程成功;

  (6)通过Eexecute方法执行在CommandText属性中指定的存储过程。

  以存储过程doc_ProcName为例,关键代码如下:

DimstrSAsString'定义一变量

DimadoconnAsNewADODB.Connection'Connection对象代表了打开与数据源的连接。

DimadocommAsNewADODB.Command'Command对象定义了将对数据源执行的指定命令。

DimReturnValueAsInteger'调用存储过程的返回值

adoconn.ConnectionString=Adodc1.ConnectionString'Adodc1为窗体中的ADO控件,并已成功连接数据库

adoconn.Open

Setadocomm.ActiveConnection=adoconn'指示指定的Command对象当前所属的Connection对象。

adocomm.CommandText="doc_ProcName"'设置Command对象源。

adocomm.CommandType=adCmdStoredProc'通知提供者CommandText属性有什么,它可能包括Command对象的源类型。

设置这个属性优化了该命令的执行。

adocomm.Parameters

(1)="1"

adocomm.Parameters

(2)="OutputParameters"'OutputParameters可以为任意的字符串或数字

adocomm.Execute

ReturnValue=adocomm.Parameters(0)'存储过程的返回值,返回0则成功执行。

strS=adocomm.Parameters

(2)'把存储过程的输出参数的值赋给变量strS

  2)追加参数法调用存储过程

  追加参数通过CreateParameter方法,用来指定属性创建新的Parameter对象。

具体语法如下:

Setparameter=command.CreateParameter(Name,Type,Direction,Size,Value)

  ·Name可选,字符串,代表Parameter对象名称。

  ·Type可选,长整型值,指定Parameter对象数据类型。

  ·Direction可选,长整型值,指定Parameter对象类型。

  ·Size可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。

  ·Value可选,变体型,指定Parameter对象值。

  这种方法与上面一种方法的分别主要在于,追加参数的方法在向存储过程传递参数时,这种方法首先通过CreateParameter方法为存储过程创建参数,然后通过Append方法将创建的参数追加到Parameters集合中去。

  仍然以存储过程doc_ProcName的调用为例,关键代码如下:

DimmRstAsADODB.Recordset'Recordset对象表示的是来自基本表或命令执行结果的记录全集。

DimprmAsADODB.Parameter'Parameter对象代表参数或与基于参数化查询或存储过程的Command对象相关联的参数。

adoconn.ConnectionString=Adodc1.ConnectionString

adoconn.Open

Setadocomm.ActiveConnection=adoconn

adocomm.CommandText="doc_ProcName"

adocomm.CommandType=adCmdStoredProc

Setprm=adocomm.CreateParameter("parameter1",adTinyInt,adParamInput,,"1")

adocomm.Parameters.Appendprm

Setprm=adocomm.CreateParameter("parameter2",adInteger,adParamOutput)

adocomm.Parameters.Appendprm

SetmRst=adocomm.Execute

ReturnValue=adocomm.Parameters(0)

  以上代码中未定义的变量以及未注释的语句与前述相同。

  结束语

  在应用程序中调用服务器端存储过程,不仅能显著提高整个应用的性能,而且能加强对数据库数据的保护。

VB为客户端应用程序调用存储过程提供了一组方便而有效的方法。

在VB中执行SQLSERVER存储过程

作者:

李世存 入库时间:

29/06/200509:

52 点击次数:

341

 

      存储过程是SQLSERVER的高级应用,应用存储过程可以处理在代码中烦锁的事件,且和代码完全分开,实现模块化。

程序员只要为存储过程输入必要的参数,而后所有的这一切就交给SQLSERVER执行。

SQLSERVER处理完毕后可传给程序员所需要的处理结果。

下面是VB应用存储过程的一个例子。

(传载请附注本站) 代码如下:

‘ 定义部份,输入参数和输出参数

Dim RsCmd As New ADODB.Command

With RsCmd

 .Parameters.Append .CreateParameter("@empl_no", adVarChar, adParamInput, 10)

 .Parameters.Append .CreateParameter("@inadd", adChar, adParamInput, 1)

 .Parameters.Append .CreateParameter("@surname", adVarChar, adParamInput, 20)

.Parameters.Append .CreateParameter("@succ_mark", adChar, adParamOutput, 1) 

.CommandText = "inp_infor" ‘ 存储过程名

 .CommandType = adCmdStoredProc ‘类型为存储过程

 .ActiveConnection = cn1 ‘连接, connection

End with

‘ 为输入参数赋值并执行存储过程

  RsCmd.Parameters("@empl_no").value = Trim(hkEmpl_no.Text)

  RsCmd.Parameters("@inadd").value = insertupdate

  RsCmd.Parameters("@surname").value = Trim(surname.Text)

RsCmd.execute

‘ 处理返回值

If RsCmd.Parameters("@succ_mark") = "S" Then

Dispose statement

End if

 

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1