VB.NET调用SQL Sever存储过程
概要:
本文介绍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命令。然后调用 SqlCommand的ExecuteReader方法以返回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存储过程的更多相关文章
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
- Delphi调用SQL分页存储过程实例
Delphi调用SQL分页存储过程实例 (-- ::)转载▼ 标签: it 分类: Delphi相关 //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程 //----分页存 ...
- VS中调用SQL SERVER存储过程
存储过程是经过编译的,永久保存在数据中的一组SQL语句,通过创建和使用存储过程能够提高程序的重用性和扩展性,为程序提供模块化的功能,还有利于对程序的维护和管理.以下就详谈一下,VB.NET怎样调 ...
- java 调用 sql server存储过程
Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. Ø ...
- qt调用sql server存储过程并获取output参数
最近新做的一个项目需要使用qt5连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章: <Q ...
- C# 调用SQL的存储过程的接口及实现
1. 接口为ExecuteStoredProcedure(string storedProcedureName, params ObjectParameter[] parameters) 2. 参数为 ...
- C#调用SQL中存储过程并用DataGridView显示执行结果
//连接数据库 SqlConnection con = new SqlConnection("server=服务器名称;database=数据库名称;user id=登录名;pwd=登录密码 ...
- Java调用SQL Server存储过程
1.调用普通存储过程(1)创建存储过程CREATE Procedure [dbo].[GetContactListByName] /*根据联系人姓名获取联系人信息*/@Name nvarchar(5 ...
- Java的jdbc调用SQL Server存储过程Bug201906131119
SQL Server数据库存储过程,一个查询使用动态sql,另一个不使用动态sql,这种情况,jdbc可能获取不到实际查询数据,虽然数据库中执行没问题. 解决方法,都使用静态sql,或都使用动态sql ...
随机推荐
- 关于android中sqllite对时间的操作
sql 中有时间的类型,date,time,datetime,方便关于记录的维护,下面一个demo演示怎么在每条记录中默认增加时间 源码下载地址 http://www.codes51.com/code ...
- FlexBuilder远程调试WEB应用
Flex使用的开发工具FlexBuiler 3,web server使用apache. 1 第一次安装IE相应flashplayer的debug版本号,下载Flash player 11.8安装,下载 ...
- 安卓WindowManager注入事件如何跳出进程间安全限制
在分析monkey源码的时候有些背景知识没有搞清楚,比如在看到monkey是使用windowmanager的injectKeyEvent方法注入事件的时候,心里就打了个疙瘩,这种方式不是只能在当前应用 ...
- 基于4.5Framework web程序、SQLSERVER数据库打包
原文:基于4.5Framework web程序.SQLSERVER数据库打包 估计很多朋友和我一样,对于C/S程序打包很熟悉,但对于B/S程序打包一头雾水... 最近公司要求我们把项目和数据库(SQL ...
- leetcode第25题--Remove Element
problem: Given an array and a value, remove all instances of that value in place and return the new ...
- git 简单教程更新
0.初始化 $ git config --global user.name "xxx" $ git config --global user.email "xxx@gma ...
- 基于嵌入式OS的任务设计-----任务划分
在<前后台系统VS嵌入式OS,何时该上OS?>一文中介绍了何时应该将OS应用于嵌入式设计中,本文将介绍基于OS的任务设计,一般来说,应用程序设计包括两个方面,一个是业务逻辑的设计,另一个是 ...
- iOS基础 - UIDatePicker and UIPickerView and UITextField
1.UIDatePicker继承自UIControl,因此不会通过代理来监听事件的改变,而是通过addTarget来监听事件.监听的事件是值改变事件. 2.UIPickerView继承自UIView, ...
- Remote验证及其改进(附源码)
Remote验证及其改进(附源码) 表单中的输入项,有些是固定的,不变的验证规则,比如字符长度,必填等.但有些是动态的,比如注册用户名是否存在这样的检查,这个需要访问服务器后台才能解决.这篇文章将会介 ...
- 关于SourceTree License
SourceTree 是免费软件,但是需要到官网注册一下账号以获得免费的License 官网地址:https://id.atlassian.com/login?application=mac& ...