概要:

本文介绍VB.NET使用创建并调用带有输入参数和输出参数的SQL Sever存储过程

本文代码首先检查要创建的存储过程再数据库中是否存在在。如果不存在,则代码创建一个存储过程,该过程一个参数来搜索用户的密码,并在输出参数中返回匹配的行及行数。

步骤:

1.      创建基本的用户界面

2.      创建GetUserID存储过程

create Procedure GetUserID (@username varchar(40), @RowCount int output)
as
select * from userlogin where adminUser = @username;
/* @@ROWCOUNT 返回最后一个受影响的行数 */
select @RowCount=@@ROWCOUNT

此代码包括两个参数:@username和@RowCount。@username是输入参数,用于获取搜索字符串比便在userlogin中执行搜索功能。@RowCount是输出参数,用于使用@@ROWCOUNT变量获取受影响的行。

3.      编写窗体代码

3.1添加“声明”部分

Imports System.Data
Imports System.Data.SqlClient

3.2若要确保存储过程并创建存储过程,结合使用SqlCommand对象和SqlDataReader对象。可以使用SqlCommand针对数据库运行任何 SQL命令。然后调用 SqlCommandExecuteReader方法以返回SqlDataReader,它包含查询的匹配行。

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim MyConnection As SqlConnection
Dim MyCommand As SqlCommand
Dim MyDataReader As SqlDataReader '设置连接语句
MyConnection = New SqlConnection("Data Source=192.168.24.75;Initial Catalog=P_charge;User ID=sa;Pwd=123456")
MyCommand = New SqlCommand '检查存储过程是否存在
MyCommand = New SqlCommand("if object_id('pubs..GetUserID') is not null " + "begin" + " if objectproperty(object_id('pubs..GetUserID'), 'IsProcedure')= 1" + " select object_id('pubs..GetUserID')" + " else" + " return " + "end" + " else" + " return", MyConnection)
'设置command命令按钮的属性
With MyCommand
.Connection = MyConnection
.CommandType = CommandType.Text
.Connection.Open() '执行sql语句
MyDataReader = .ExecuteReader()
'如果不存在那么就创建一个新的存储过程,如果存在就关闭数据库
If MyDataReader.Read() Then
.CommandText = "create procedure GetUserID (@username varchar(40), " & "@RowCount int output) " & " as select * from userlogin where adminUser = @username; select @RowCount=@@ROWCOUNT"
MyDataReader.Close()
.ExecuteNonQuery()
Else
MyDataReader.Close()
End If
'关闭数据库
.Dispose() 'Dispose of the Command object.
MyConnection.Close() 'Close the connection.
End With
End Sub

3.3在按钮的Click事件中调用存储过程,然后使用SqlDataAdapter对象运行存储过程。必须为该存储过程创建参数,并将它附加到SqlDataAdapter对象的Parameters集合中。

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim DS As DataSet
Dim MyConnection As SqlConnection
Dim MyDataAdapter As SqlDataAdapter '连接数据库语句
MyConnection = New SqlConnection("Data Source=192.168.24.75;Initial Catalog=userlogin;User ID=sa;Pwd=123456") '创建一个dataapater,然后给出存储过程的名字
MyDataAdapter = New SqlDataAdapter("GetUserID", MyConnection) '设置命令类型是存储过程
MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure '设置存储过程参数
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@username", SqlDbType.VarChar, 40))
'指定存储过程过程参数
MyDataAdapter.SelectCommand.Parameters("@username").Value = Trim(TxtLastName.Text) '设置存储过程参数
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@RowCount", SqlDbType.Int, 4))
'设置参数是输出参数
MyDataAdapter.SelectCommand.Parameters("@RowCount").Direction = ParameterDirection.Output '创建一个新的记录集来保存数据
DS = New DataSet()
MyDataAdapter.Fill(DS, "userid") '返回的行填充到数据集 '得到返回行数,赋给lblRowCount
'lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " Rows Found!"
lblRowCount.Text = MyDataAdapter.SelectCommand.Parameters(1).Value & " Rows Found!" '设定DataGrid控件的数据源
Grdauthors.DataSource = DS.Tables("userid").DefaultView '关闭dataapater和数据库
MyDataAdapter.Dispose() 'Dispose of the DataAdapter.
MyConnection.Close() 'Close the connection.
End Sub

4. 运行结果

VB.NET调用SQL Sever存储过程的更多相关文章

  1. Yii2.0调用sql server存储过程并获取返回值

    1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...

  2. Delphi调用SQL分页存储过程实例

    Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...

  3. VS中调用SQL SERVER存储过程

     存储过程是经过编译的,永久保存在数据中的一组SQL语句,通过创建和使用存储过程能够提高程序的重用性和扩展性,为程序提供模块化的功能,还有利于对程序的维护和管理.以下就详谈一下,VB.NET怎样调 ...

  4. java 调用 sql server存储过程

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...

  5. qt调用sql server存储过程并获取output参数

    最近新做的一个项目需要使用qt5连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章: <Q ...

  6. C# 调用SQL的存储过程的接口及实现

    1. 接口为ExecuteStoredProcedure(string storedProcedureName, params ObjectParameter[] parameters) 2. 参数为 ...

  7. C#调用SQL中存储过程并用DataGridView显示执行结果

    //连接数据库 SqlConnection con = new SqlConnection("server=服务器名称;database=数据库名称;user id=登录名;pwd=登录密码 ...

  8. Java调用SQL Server存储过程

    1.调用普通存储过程(1)创建存储过程CREATE Procedure [dbo].[GetContactListByName]  /*根据联系人姓名获取联系人信息*/@Name nvarchar(5 ...

  9. Java的jdbc调用SQL Server存储过程Bug201906131119

    SQL Server数据库存储过程,一个查询使用动态sql,另一个不使用动态sql,这种情况,jdbc可能获取不到实际查询数据,虽然数据库中执行没问题. 解决方法,都使用静态sql,或都使用动态sql ...

随机推荐

  1. Pki原则

    核心提示: 公开密钥和公开密钥证明书,产生的私钥client要么server证书.加密的公共密钥才能解密私钥文件只.私钥只能解密公开的加密文件.公众认为,它是开放的.所有的人都能够得到它.私人还表明, ...

  2. 原生态纯JavaScript 100大技巧大收集---你值得拥有

    1.原生JavaScript实现字符串长度截取 function cutstr(str, len) { var temp; var icount = 0; var patrn = /[^\x00-\x ...

  3. Android注入事件的三种方法比较

    方法1:使用内部APIs 该方法和其他所有内部没有向外正式公布的APIs一样存在它自己的风险.原理是通过获得WindowManager的一个实例来访问injectKeyEvent/injectPoin ...

  4. 5. SQL Server数据库性能监控 - 当前请求

    原文:5. SQL Server数据库性能监控 - 当前请求 对于在线运行的系统,当前数据库性能监控,通常监视以下几点: (1) 是否有阻塞 (Blocking); (2) 是否有等待 (Waitin ...

  5. J2EE

    随笔分类 - J2EE   关于SpringMVC Json使用 摘要: 很简单的一个东西,这里就不做过多介绍了,写一个小Demo,随手记录下.首先,在搭好SpringMVC工程环境之后,如果想用Sp ...

  6. SQL点滴25—T-SQL面试语句,练练手

    原文:SQL点滴25-T-SQL面试语句,练练手 1. 用一条SQL语句查询出每门课都大于80分的学生姓名 name   kecheng    fenshu 张三     语文     81张三    ...

  7. 在linux中如何调试C语言程序

    在Linux下面可以使用下面几种形式对C语言进行调试: 1 gdb gdb program 这是最原始的调试方法,若非熟悉命令行,这种方式其实是比较麿人的.有兴趣的可以参考一些我之前的博文.http: ...

  8. Asterisk 未来之路3.0_0005

    原文:Asterisk 未来之路3.0_0005 第二章: Asterisk的架构   Asterisk 和其他众多传统的PBX是有区别的,拨号方案针对各种通道处理本质上采用同一种方式. 在传统的PB ...

  9. Java集合之ArrayList源码分析

    1.简介 List在数据结构中表现为是线性表的方式,其元素以线性方式存储,集合中允许存放重复的对象,List接口主要的实现类有ArrayList和LinkedList.Java中分别提供了这两种结构的 ...

  10. 【剑指offer】的功率值

    标题叙述性说明: 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数.同一时候不须要考虑大数问题. 分析描写叙述: ...