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

先建立一个无参的存储过程,为下面第一个无参调用作准备:

use Sales
go
create procedure sp_getGrade
as 
select * from grade where 数学>60
go

注:go是作为前面批处理的结束情况。因为前面执行是要花时间的,如果后面执行的要依赖前面结果,没有go的话,有可能前面

         没有执行完,当然后面依赖此结果的语句就会执行错误。所以go的作用很大。


再复习ADO.net的过程:

一、连接数据库

二、发出指令。command默认是commandType.text。因为是存储过程,所以应指明为commandType.StoreProcedure

三、填充结果集,显示。


所以代码如下:

Imports System.Data.SqlClient

Public Class Form1
    Dim cn As SqlConnection
    Dim cm As SqlCommand
    Dim da As SqlDataAdapter
    Dim ds As DataSet

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            cn = New SqlConnection("Data Source=(local);Initial Catalog=Sales;Integrated Security=false;User ID=sa;Password=123456;")
            cn.Open()  '此句不省
            cm = New SqlCommand("sp_getGrade", cn)
            cm.CommandType = CommandType.StoredProcedure '指明为存储过程
            da = New SqlDataAdapter(cm)
            ds = New DataSet()
            da.Fill(ds, "grade")
            DataGridView1.DataSource = ds.Tables("grade")
            cn.Close()
        Catch ex As Exception
            MessageBox.Show("执行失败")
        End Try
    End Sub
End Class

结果如下:




================================================================================================


下面是一个带参数的存储过程的调用。

这个带参的存储过程用到了前面的SQL存储过程:



注:output是说明这个参数是一个输出变量。有三种变量:输入变量(就是前面两个就是),输出变量(第三个),输入/输出变量。


表中存储的用户名和密码。存储过程就是来验证里面的用户名和密码的。


下面用vb.net来调用这个带参数的存储过程。

带参数的存储过程有一个专门的Parameters属性来指明,其中的Add就是添加这个参数。

另外还有一个Value是获得或设置其变量的值。direction也一样,只不过是特殊的值,比如本的输出参数。


看下实例:带参的存储过程调用

Imports System.Data.SqlClient

Public Class Form1
    Dim cn As SqlConnection
    Dim cm As SqlCommand
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            cn = New SqlConnection("Data Source=.;Initial Catalog=Sales;Integrated Security=False;User ID=sa;Password=123456;")
            cn.Open()
            cm = New SqlCommand("sp_CheckPass", cn)
            cm.CommandType = CommandType.StoredProcedure
            cm.Parameters.Add("@CHKName", SqlDbType.VarChar, 30).Value = TextBox1.Text
            cm.Parameters.Add("@CHKPass", SqlDbType.VarChar, 30).Value = TextBox2.Text
            cm.Parameters.Add("@ISValid", SqlDbType.VarChar, 12).Direction = ParameterDirection.Output
            cm.ExecuteNonQuery()
            If cm.Parameters("@ISValid").Value = "Good" Then
                MessageBox.Show("验证成功")
            Else
                MessageBox.Show("验证失败")
            End If

        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub
End Class

结果:



注:这里没用密码框,是为了显示程序流程。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值