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

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

  1. use Sales  
  2. go  
  3. create procedure sp_getGrade  
  4. as   
  5. select * from grade where 数学>60  
  6. go  

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

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


再复习ADO.net的过程:

一、连接数据库

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

三、填充结果集,显示。


所以代码如下:

  1. Imports System.Data.SqlClient  
  2.   
  3. Public Class Form1  
  4.     Dim cn As SqlConnection  
  5.     Dim cm As SqlCommand  
  6.     Dim da As SqlDataAdapter  
  7.     Dim ds As DataSet  
  8.   
  9.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click  
  10.         Try  
  11.             cn = New SqlConnection("Data Source=(local);Initial Catalog=Sales;Integrated Security=false;User ID=sa;Password=123456;")  
  12.             cn.Open()  '此句不省  
  13.             cm = New SqlCommand("sp_getGrade", cn)  
  14.             cm.CommandType = CommandType.StoredProcedure '指明为存储过程  
  15.             da = New SqlDataAdapter(cm)  
  16.             ds = New DataSet()  
  17.             da.Fill(ds, "grade")  
  18.             DataGridView1.DataSource = ds.Tables("grade")  
  19.             cn.Close()  
  20.         Catch ex As Exception  
  21.             MessageBox.Show("执行失败")  
  22.         End Try  
  23.     End Sub  
  24. End Class  

结果如下:




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


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

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



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


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


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

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

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


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

  1. Imports System.Data.SqlClient  
  2.   
  3. Public Class Form1  
  4.     Dim cn As SqlConnection  
  5.     Dim cm As SqlCommand  
  6.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click  
  7.         Try  
  8.             cn = New SqlConnection("Data Source=.;Initial Catalog=Sales;Integrated Security=False;User ID=sa;Password=123456;")  
  9.             cn.Open()  
  10.             cm = New SqlCommand("sp_CheckPass", cn)  
  11.             cm.CommandType = CommandType.StoredProcedure  
  12.             cm.Parameters.Add("@CHKName", SqlDbType.VarChar, 30).Value = TextBox1.Text  
  13.             cm.Parameters.Add("@CHKPass", SqlDbType.VarChar, 30).Value = TextBox2.Text  
  14.             cm.Parameters.Add("@ISValid", SqlDbType.VarChar, 12).Direction = ParameterDirection.Output  
  15.             cm.ExecuteNonQuery()  
  16.             If cm.Parameters("@ISValid").Value = "Good" Then  
  17.                 MessageBox.Show("验证成功")  
  18.             Else  
  19.                 MessageBox.Show("验证失败")  
  20.             End If  
  21.   
  22.         Catch ex As Exception  
  23.             MessageBox.Show(ex.ToString)  
  24.         End Try  
  25.     End Sub  
  26. End Class  

结果:



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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值