我之前已经完成了但是无法让它工作,我只想在我的SP中做一个返回任何内容的选择,然后在代码隐藏中执行,然后对返回的代码执行任何操作。
C#代码
protected long getPassword(string EnteredPass)
{
var connectionString = ConfigurationManager.ConnectionStrings["GetConnector"].ConnectionString;
SqlConnection dbConnection = new SqlConnection();
dbConnection.ConnectionString = connectionString;
SqlCommand dbCommand = new SqlCommand("PL_User_Check", dbConnection);
dbCommand.CommandType = CommandType.StoredProcedure;
SqlParameter abc = dbCommand.Parameters.Add("@User", SqlDbType.VarChar);
abc.Value = EnteredPass;
dbCommand.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;
dbConnection.Open();
dbCommand.ExecuteNonQuery();
dbConnection.Close();
object x = dbCommand.Parameters[""].Value;
return Convert.ToInt64(x);
}
存储过程......
ALTER PROCEDURE [dbo].[PL_User_Check]
@User VARCHAR(50),
@ReturnValue BIGINT OUTPUT
AS
DECLARE @pass BIGINT
--Data
SET @Pass = (SELECT Pass
FROM dbo.UserPasswords
WHERE [User] = @User)
SET @ReturnValue = @Pass
答案 0 :(得分:2)
使用:
ParameterDirection.Output
而不是:
ParameterDirection.ReturnValue
答案 1 :(得分:0)
显式传递参数,然后可以查询参数对象的值。您正在使用Parameters.Add并隐式创建对象。方法:
这应该可以解决你的问题。
答案 2 :(得分:0)
执行前
dbCommand.AddOutParameter("@ReturnValue", DbType.Int64);
执行后
dbCommand.GetParameterValue<Int64>("@ReturnValue")