VB调用存储过程

合集下载

VB_Net调用存储过程并得到返回值

VB_Net调用存储过程并得到返回值
Insert Into SMB_InvoiceInfo (MemberID,ClaimMethod,InvoiceNum,InvoiceDate,InvoiceCity) Values
(@sUserID,@sClaimMethod,@sInvoiceNum,@sInvoiceDate,@sBuyCity)
调用存储过程并得到返回值
//存储过程代码
CREATE PROCEDURE [AddNewInvoiceInfo] (@sUserID int,@sClaimMethod varchar(50),@sInvoiceNum
varchar(50),@sInvoiceDate datetime,@sBuyCity varchar(50))AS
InvoiceID = CMD.Parameters(@sInvoiceID).Value.ToString()
CMD.Dispose()
Catch ex As Exception
Response.Write(ex.ToString())
Finally
CN.Close()
CMD.Parameters(@sInvoiceDate).Value = InvoiceDate.SelectedDate.Date
CMD.Parameters.Add(New SqlParameter(@sBuyCity, SqlDbType.VarChar, 50))
CMD.Parameters(@sBuyCity).Value = BuyCity.Text
return @@IDENTITY
GO
//调用存储过程代码
Dim CN As New SqlConnection()

vb调用存储过程的返回值

vb调用存储过程的返回值

vb调用存储过程的返回值VB调用存储过程的返回值在VB中,调用存储过程是一种非常常见的操作。

存储过程可以用于执行一系列的数据库操作,并返回一个结果集、一个标志值或者两者的组合。

通过调用存储过程,我们可以在VB程序中对数据库进行相应的操作和查询。

本文将详细介绍如何在VB中调用存储过程,并获取存储过程的返回值。

第一步:准备工作在开始调用存储过程之前,我们首先需要在数据库中创建相应的存储过程。

存储过程可以使用SQL Server Management Studio等工具进行创建和修改。

以下是一个简单的存储过程示例:CREATE PROCEDURE GetProductCount@CategoryID INT,@ProductCount INT OUTPUTASBEGINSELECT @ProductCount = COUNT(*)FROM ProductsWHERE CategoryID = @CategoryIDEND上面的存储过程接受一个输入参数@CategoryID,并将符合条件的产品数量赋值给输出参数@ProductCount。

接下来,我们将在VB中调用这个存储过程,并获取返回的产品数量。

第二步:连接数据库首先,我们需要在VB中建立与数据库的连接。

可以使用ADODB库的Connection对象来实现这一功能。

以下是一个建立数据库连接的示例代码:Dim conn As New ADODB.Connectionconn.ConnectionString = "Provider=SQLOLEDB;DataSource=ServerName;Initial Catalog=DatabaseName;UserID=UserName;Password=Password"conn.Open在上面的代码中,需要将ServerName、DatabaseName、UserName 和Password替换为实际的数据库服务器名称、数据库名称、用户名和密码。

VB.net数据库编程(06):调用存储过程(带参和不参数情况)

VB.net数据库编程(06):调用存储过程(带参和不参数情况)

数据库编程(06):调用存储过程(带参和不参数情况)先建立一个无参的存储过程,为下面第一个无参调用作准备:[sql]view plaincopyprint?e Sales2.go3.create procedure sp_getGrade4.as5.select * from grade where 数学>606.go注:go是作为前面批处理的结束情况。

因为前面执行是要花时间的,如果后面执行的要依赖前面结果,没有go的话,有可能前面没有执行完,当然后面依赖此结果的语句就会执行错误。

所以go 的作用很大。

再复习的过程:一、连接数据库二、发出指令。

command默认是commandType.text。

因为是存储过程,所以应指明为commandType.StoreProcedure三、填充结果集,显示。

所以代码如下:[vb]view plaincopyprint?1.Imports System.Data.SqlClient2.3.Public Class Form14.Dim cn As SqlConnection5.Dim cm As SqlCommand6.Dim da As SqlDataAdapter7.Dim ds As DataSet8.9.Private Sub Button1_Click(sender As Object, e As EventAr gs) Handles Button1.Click10.Try = New SqlConnection("Data Source=(local);Initial C atalog=Sales;Integrated Security=false;User ID=sa;Password=12 3456;").Open() '此句不省13.cm = New SqlCommand("sp_getGrade", cn)mandType = CommandType.StoredProcedure '指明为存储过程15.da = New SqlDataAdapter(cm)16.ds = New DataSet()17.da.Fill(ds, "grade")18.DataGridView1.DataSource = ds.Tables("grade").Close()20.Catch ex As Exception21.MessageBox.Show("执行失败")22.End Try23.End Sub24.End Class结果如下:====================================== ========================================= =================下面是一个带参数的存储过程的调用。

在VB中实现存储过程的调用

在VB中实现存储过程的调用
Di m c o n n s  ̄ As S t r i n g ,c o n n As Ne w ADODB. Co n n e c —
t i o n
2 .1 ADO简介
ADO控 件 ( 也 称 为 ADO D a t a 控件 ) 与V B 固有 的 Da t a 控
象访 问 S QL S E RV E R- i  ̄ 库H- E . - 体步骤 , 以及 如何在 V B程序开发 的过程 中调 用存储过程 。 [ 关键词] V B; A DO对 象; 存储过程 ; S QL s E RV E R数 据库
要信息 ; 最 后测试连 接 , 连接成 功后 , 按确 定按钮 , 返 回 到 属
I n f o = Fa l s e ; Us e r I D= s a ;p wd = s a ; I n i t i a l Ca t a l o g = No  ̄h wi n d : Da t a S o u r c e = T6 01 B0 5 ”
ADO对象 编程 即在 VB程序 开发 过程 中 , 调用 C o r m e c — t i o n 、 R e c o r d S e t 等对象进行编程 , 访 问数据库 。 C o n n e c t i o n ( 连接 ) : 表 示一个到远程数据库 的连接 , 该数
No  ̄ h wi n d 数 据 库 可将 上面 的代码 放在 窗体 的 L o a d 事 件 中, 运 行 此 窗 体 时 就 能 成 功 地 连 接 数 据 库 。接 着 , 就 可 使 用 数 据 库 感 知 控 件 ( MS F l e x Gr i d 、 T e x t B o x 、 Da t a G r i d 等) 将 其 内容 显 示 出 来 ; 或 者 在 程 序 中 进 一 步 地 调 用 存 储 过 程 来 执 行 需 要 的操 作 。

VB调用存储过程

VB调用存储过程

存储过程spREA TE PROCEDURE sp@dept varchar(10) ,@sno varchar(10)ASSELECT s.sno, s.sname, ISNULL(A VG(grade),-1) average FROM s,scWHERE sdept=@dept and s.sno>=@sno and s.sno=sc.sno group by s.sno,s.snameRETURNGODim cnn1 As ADODB.Connection '连接Dim mycommand As mand '命令Dim parm_dept As ADODB.Parameter '参数1Dim parm_sno As ADODB.Parameter '参数2Dim rstByQuery As ADODB.Recordset '结果集Dim strCnn As String '连接字符串Private Sub Command1_Click()Dim i As IntegerDim j As IntegerSet parm_dept = New ADODB.ParameterSet mycommand = New mand' parm_ = "name1"parm_dept.Type = adChar '参数类型parm_dept.Size = 10 '参数长度parm_dept.Direction = adParamInput'参数方向,输入或输出parm_dept.V alue = "计科系" '参数的值mycommand.Parameters.Append parm_dept '加入参数Set parm_sno = New ADODB.Parameter'parm_ = "name2"parm_sno.Type = adIntegerparm_sno.Size = 10parm_sno.Direction = adParamInputparm_sno.V alue = "1501"mycommand.Parameters.Append parm_snomycommand.ActiveConnection = cnn1'指定该command 的当前活动连接mandText = "sp"'myprocedure 是你要调用的存储过程名称mandType = adCmdStoredProc'表明command 为存储过程Set rstByQuery = New ADODB.RecordsetSet rstByQuery = mycommand.Execute()MSFlexGrid1.Rows = 1'动态设置MSFlexGrid的行和列MSFlexGrid1.Cols = rstByQuery.Fields.Count MSFlexGrid1.Row = 0For i = 0 To rstByQuery.Fields.Count - 1MSFlexGrid1.Col = iMSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name Next '设置第一行的标题,用域名填充i = 1Do While Not rstByQuery.EOFMSFlexGrid1.Rows = MSFlexGrid1.Rows + 1MSFlexGrid1.Row = i '确定行For j = 0 To rstByQuery.Fields.Count - 1MSFlexGrid1.Col = jMSFlexGrid1.Text = rstByQuery(j)'添充所有的列NextrstByQuery.MoveNexti = i + 1LoopEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Form_Load()Set cnn1 = New ADODB.Connection'生成一个连接strCnn = "DRIVER=SQL Server; SERVER=192.168.1.4; UID=sa; PWD=; DA TABASE=sample"cnn1.Open strCnn '打开连接End SubPrivate Sub Form_Unload(Cancel As Integer) cnn1.Close '关闭连接Set cnn1 = Nothing '释放连接End Sub。

VB调用执行存储过程

VB调用执行存储过程

关键字:数据库;SQL Server2000;存储过程;应用程序;VB存储过程存储过程是存储在服务器上的一组预编译的Transact-SQL语句,是一种封装重复任务操作的方法,支持用户提供的变量,具有强大的编程功能。

它类似于DOS系统中的BAT文件。

在BAT文件中,可以包含一组经常执行的命令,这组命令通过BAT文件的执行而被执行。

同样的道理,可以把要完成某项任务的许多Transact-SQL语句写在一起,组织成存储过程的形式,通过执行该存储过程就可以完成这项任务。

存储过程与BAT文件又有差别,即存储过程已经进行了预编译。

1、创建存储过程的方法在Transact-SQL语言中,创建存储过程可以使用CREATE PROCEDURE语句,其语法形式如下:CREATE PROC[EDURE] procedure_name[;number][{@parameter data_type}[VARYING][=default][OUTPUT]]],…n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}][FOR REPLICATION]AS sql_statement[…n]在上面的CREATE PROCEDURE语句中,方括号"[ ]"中的内容是可选的,花括号"{}"中的内容是必须出现的,不能省略,[,…n]表示前面的参数样式,可以重复出现。

竖线"|"表示两边的选项可以任选一个。

下面分析该语句中各种选项的含义。

CREATE PROCEDURE是关键字,也可以写成CREATE PROC。

procedure_name是该存储过程的名称,名称可以是任何符合命名规则的标示符。

名称后的[;number]参数表示可以定义一系列的存储过程名称,这些存储过程的数量由number 指定。

参数名称可以使用@parameter data_type来指定。

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

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

VB中访问存储过程的几种办法使用SQL存储过程有什么好处■SQL存储过程执行起来比SQL命令文本快得多。

当一个SQL语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它。

■调用存储过程,可以认为是一个三层结构。

这使你的程序易于维护。

如果程序需要做某些改动,你只要改动存储过程即可■你可以在存储过程中利用Transact-SQL的强大功能。

一个SQL存储过程可以包含多个SQL 语句。

你可以使用变量和条件。

这意味着你可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。

■最后,这也许是最重要的,在存储过程中可以使用参数。

你可以传送和返回参数。

你还可以得到一个返回值(从SQL RETURN语句)。

环境:WinXP+VB6+sp6+SqlServer2000数据库:test表:UsersCREATE TABLE [dbo].[users] ([id] [int] IDENTITY (1, 1) NOT NULL ,[truename] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,[regname] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,[pwd] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,[sex] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,[email] [text] COLLATE Chinese_PRC_CI_AS NULL ,[jifen] [decimal](18, 2) NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]ALTER TABLE [dbo].[users] WITH NOCHECK ADDCONSTRAINT [PK_users] PRIMARY KEY CLUSTERED([id]) ON [PRIMARY]GO存储过程select_usersCREATE PROCEDURE select_users @regname char(20), @numrows int OUTPUT ASSelect * from usersSELECT @numrows = @@ROWCOUNTif @numrows = 0return 0else return 1GO存储过程insert_usersCREATE PROCEDURE insert_users @truename char(20), @regname char(20),@pwd char(20),@sex char(20),@email char(20),@jifen decimal(19,2)ASinsert into users(truename,regname,pwd,sex,email,jifen) values(@truename,@regname,@pwd,@sex,@email,@jifen)GO在VB环境中,添加DataGrid控件,4个按钮,6个文本框代码简单易懂。

调用存储过程的通用方法

调用存储过程的通用方法

调用存储过程的通用方法[摘要] 在中存储过程的调用模式几乎一样,不同之处是每个存储过程的参数不同,所以每调用一次存储过程重复代码很多,这在做项目时很麻烦。

笔者经过实践实现了在中调用存储过程的简单方法,该方法只需要提供要调用的存储过程名字和提供具体的参数值就可实现任何存储过程的调用。

[关键词] ;存储过程;系统表;信息结构视图笔者在用做项目时,很多时候要调用数据库中的存储过程,因为使用存储过程使得程序在调试、升级、维护方面都变得方便,时间久了,笔者发现存储过程的调用模式几乎一样,差别只是在于调用不同的存储过程的参数不同,所以每调用一次存储过程都要写一大堆几乎一样的代码,这在做项目时很麻烦,所以就想找一种简便的调用存储过程的方法。

笔者通过查找资料和编程实践实现了在中调用存储过程的通用方法。

该方法只需要提供要调用的存储过程名字和提供具体的参数值就可实现任何存储过程的调用。

在中存储过程分为有返回值的和无返回值的,不论哪种存储过程,它的调用方法都可以概括为下面的几步:(1) 声明一个Sql Connection实例。

(2) 声明一个Sql Command实例,并且设置其Connection属性为刚声明的Sql Connection实例,设置CommandName为存储过程名,CommandType为存储过程。

(3) 向声明的Sql Command实例的Parameters集合中添加所有的存储过程调用需要的参数。

(4) 声明Sql DataAdapter和DataSet,设置Sql DataAdapter的SelectCommand 属性为2中声明的Sql Command实例,再调用其Fill方法来把返回的行集填充到DataSet中。

(5) 关闭Sql Connection实例。

(6) 释放声明的各个实例。

调用不同的存储过程,只是第二步的CommandName和第三步中的参数不同。

我们要写一个通用的调用存储过程的方法,该方法只需要提供要调用的存储过程名字和提供具体的参数值就可实现任何存储过程的调用,那么就要自动实现如何根据存储过程名来得到它所有的参数信息,再根据这些参数信息自动创建各个参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

存储过程sp
REA TE PROCEDURE sp
@dept varchar(10) ,
@sno varchar(10)
AS
SELECT s.sno, s.sname, ISNULL(A VG(grade),-1) average FROM s,sc
WHERE sdept=@dept and s.sno>=@sno and s.sno=sc.sno group by s.sno,s.sname
RETURN
GO
Dim cnn1 As ADODB.Connection '连接
Dim mycommand As mand '命令
Dim parm_dept As ADODB.Parameter '参数1
Dim parm_sno As ADODB.Parameter '参数2
Dim rstByQuery As ADODB.Recordset '结果集
Dim strCnn As String '连接字符串
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Set parm_dept = New ADODB.Parameter
Set mycommand = New mand
' parm_ = "name1"
parm_dept.Type = adChar '参数类型
parm_dept.Size = 10 '参数长度
parm_dept.Direction = adParamInput
'参数方向,输入或输出
parm_dept.V alue = "计科系" '参数的值
mycommand.Parameters.Append parm_dept '加入参数Set parm_sno = New ADODB.Parameter
'parm_ = "name2"
parm_sno.Type = adInteger
parm_sno.Size = 10
parm_sno.Direction = adParamInput
parm_sno.V alue = "1501"
mycommand.Parameters.Append parm_sno
mycommand.ActiveConnection = cnn1
'指定该command 的当前活动连接
mandText = "sp"
'myprocedure 是你要调用的存储过程名称mandType = adCmdStoredProc
'表明command 为存储过程
Set rstByQuery = New ADODB.Recordset
Set rstByQuery = mycommand.Execute()
MSFlexGrid1.Rows = 1
'动态设置MSFlexGrid的行和列
MSFlexGrid1.Cols = rstByQuery.Fields.Count MSFlexGrid1.Row = 0
For i = 0 To rstByQuery.Fields.Count - 1
MSFlexGrid1.Col = i
MSFlexGrid1.Text = rstByQuery.Fields.Item(i).Name Next '设置第一行的标题,用域名填充
i = 1
Do While Not rstByQuery.EOF
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
MSFlexGrid1.Row = i '确定行
For j = 0 To rstByQuery.Fields.Count - 1
MSFlexGrid1.Col = j
MSFlexGrid1.Text = rstByQuery(j)
'添充所有的列
Next
rstByQuery.MoveNext
i = i + 1
Loop
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Form_Load()
Set cnn1 = New ADODB.Connection
'生成一个连接
strCnn = "DRIVER=SQL Server; SERVER=192.168.1.4; UID=sa; PWD=; DA TABASE=sample"
cnn1.Open strCnn '打开连接
End Sub
Private Sub Form_Unload(Cancel As Integer) cnn1.Close '关闭连接
Set cnn1 = Nothing '释放连接
End Sub。

相关文档
最新文档