存储过程测试返回值通常,VB中调用,返回值一直为初始值

存储过程测试返回值正常,VB中调用,返回值一直为初始值
存储过程测试返回值正常,VB.net2010中调用,@qx和@yn返回值一直为初始值
declare @i int 
declare @j int
 exec check_login '张三','123456',@i output,@j output
 select @i
/* select @j */
密码给对的和错的,在SQL里查询返回的都正确。一晚上没查出问题出在哪。。。。。。
代码如下

USE [crm]
GO
/****** Object: StoredProcedure [dbo].[check_login] Script Date: 07/13/2012 04:37:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[check_login]
  @usr varchar(50) ,
  @pass varchar(50),
  @qx int output,
  @yn int output
   
AS
declare @i varchar
set @qx=0
set nocount on
select @qx=[user_qx] from user_info where [user_name]=@usr and [user_pwd]=@pass
if @qx=0
set @yn=0
else  
set @yn=1



VB.NET代码如下:

  Private Sub Button_login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_login.Click
   
  Dim dbConnection = New SqlClient.SqlConnection("Data Source=192.168.0.134;Initial Catalog=crm;Persist Security Info=True;User ID=sa;Password=123")

  Dim cmdSQL = New SqlClient.SqlCommand("check_login", dbConnection)
   
  cmdSQL.CommandType = CommandType.StoredProcedure
   
  cmdSQL.Parameters.Add("@usr", SqlDbType.VarChar, 50)
   
  cmdSQL.Parameters("@usr").Value = Me.ComboBox_username.SelectedItem.ToString
   
  cmdSQL.Parameters.Add("@pass", SqlDbType.VarChar, 50)
   
  cmdSQL.Parameters("@pass").Value = Me.TextBox_pwd.Text
   
  cmdSQL.Parameters.Add("@qx", SqlDbType.Int, 4)
  cmdSQL.Parameters("@qx").Direction = ParameterDirection.Output
  cmdSQL.Parameters.Add("@yn", SqlDbType.Int, 4)
   
  cmdSQL.Parameters("@yn").Direction = ParameterDirection.Output
   
  dbConnection.Open()
   
  cmdSQL.ExecuteNonQuery()
   
  dbConnection.Close()
   
  If cmdSQL.Parameters("@yn").Value = 1 Then
  'Form1.Show()
  'Me.Close()
  MsgBox(cmdSQL.Parameters("@qx").Value)
  Else
  MsgBox(cmdSQL.Parameters("@qx").Value)
  End If
   


  End Sub

------解决方案--------------------
mdSQL.Parameters("@usr").Value = Me.ComboBox_username.SelectedItem.ToString
cmdSQL.Parameters("@pass").Value = Me.TextBox_pwd.Text
都换成实际数据库中存在的值再测,应是可以的

估计Me.ComboBox_username.SelectedItem.ToString有问题,你取的值可能不是选中的文本
,而是Me.ComboBox_username.SelectedValue