从存储过程中获取数据的问题 [英] problem in getting data from stored procedure

查看:73
本文介绍了从存储过程中获取数据的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我的代码有什么问题,程序执行正确,但是这里userId变零(0)



  public   static   bool  AdminLogin( string  username, string  password, out   int  userId)
{
bool IsUser = ;

使用(SqlConnection conn = new SqlConnection(Constants.CONNECTION))
{
使用(SqlCommand cmd = new SqlCommand(Constants.Procs.CHECK_ADMIN_LOGINS, conn))
{
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add( @ Username,SqlDbType.VarChar , 20 )。Value = username;
cmd.Parameters.Add( @ Password,SqlDbType.VarChar, 20 )。值=密码;
cmd.Parameters.Add( @ UserId,SqlDbType.SmallInt).Value = ParameterDirection.Output;
cmd.Parameters.Add( @ IsUser,SqlDbType.Bit, 2 )。Value = ParameterDirection.Output;

conn.Open();
cmd.ExecuteNonQuery();

int .TryParse(Convert.ToString(cmd.Parameters [ < span class =code-string> @ UserId
]。Value), out userId);

return Convert.ToBoolean(cmd.Parameters [ @ IsUser]值)。
}
}
return IsUser;
}

解决方案

为什么你认为将参数的值设置为ParameterDirection.Output会神奇地使它成为输出参数?您是否认为将其设置为您的用户名会神奇地使其成为您的用户?



试试这个:

 cmd.Parameters.Add(  @ UserId,SqlDbType.SmallInt).Direction = ParameterDirection.Output; 


May i know whats problem with my code, the procedure executed correct only, but here userId am getting zero (0)

public static bool AdminLogin(string username, string password, out int userId)
    {
        bool IsUser = false;

        using (SqlConnection conn = new SqlConnection(Constants.CONNECTION))
        {
            using (SqlCommand cmd = new SqlCommand(Constants.Procs.CHECK_ADMIN_LOGINS, conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add("@Username", SqlDbType.VarChar, 20).Value = username;
                cmd.Parameters.Add("@Password", SqlDbType.VarChar, 20).Value = password;
                cmd.Parameters.Add("@UserId", SqlDbType.SmallInt).Value = ParameterDirection.Output;
                cmd.Parameters.Add("@IsUser", SqlDbType.Bit, 2).Value = ParameterDirection.Output;

                conn.Open();
                cmd.ExecuteNonQuery();

                int.TryParse(Convert.ToString(cmd.Parameters["@UserId"].Value), out userId);

                return Convert.ToBoolean(cmd.Parameters["@IsUser"].Value);
            }
        }
        return IsUser;
    }

解决方案

Why do you think that setting the Value of a parameter to "ParameterDirection.Output" is going to magically cause it to become an output parameter? Do you think that setting it to your username magically makes it your user?

Try this:

cmd.Parameters.Add("@UserId", SqlDbType.SmallInt).Direction = ParameterDirection.Output;


这篇关于从存储过程中获取数据的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆