asp.net - 使用位从存储过程返回 bool 值

标签 asp.net sql stored-procedures

这是我的存储过程代码,用于检查电子邮件可用性。

ALTER PROCEDURE [dbo].[usp_CheckEmailMobile](@Name VARCHAR(50), @Email NVARCHAR(50), @Password NVARCHAR(50), @CountryCode INT, @Mobile VARCHAR(50), @Result BIT OUTPUT)
AS 
BEGIN 


IF EXISTS (SELECT COUNT (*) FROM AUser WHERE  [Email] = @Email AND [Mobile] = @Mobile) 


SELECT 'FALSE'; --Email &/or Mobile does not exist in database

ELSE
 --Insert the record & register the user 
INSERT INTO [AUser] ([Name], [Email], [Password], [CountryCode], [Mobile]) VALUES (@Name, @Email, @Password, @CountryCode, @Mobile)  


END

如何将此 SP 的结果分配给@Result(其输出参数)??

这是cs代码:我哪里出错了?

      protected void btnRegister_Click(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
        con.Open();



        SqlCommand Cmd = new SqlCommand("usp_CheckEmailMobile", con);
        Cmd.CommandType = CommandType.StoredProcedure;
        Cmd.CommandText = "Registration";
        Cmd.Parameters.AddWithValue("@Name", txtName.Text);
        Cmd.Parameters.AddWithValue("@Email", txtEmailAddress.Text);
        Cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
        Cmd.Parameters.AddWithValue("@CountryCode", ddlCountryCode.Text);
        Cmd.Parameters.AddWithValue("@Mobile", txtMobileNumber.Text);
        //Cmd.Parameters.Add("@Result", DbType.Boolean);
        SqlParameter sqlParam = new SqlParameter("@Result", DbType.Boolean);
        //sqlParam.ParameterName = "@Result";
        //sqlParam.DbType = DbType.Boolean;
        sqlParam.Direction = ParameterDirection.Output;
        Cmd.Parameters.Add(sqlParam);
        Cmd.ExecuteNonQuery();
        con.Close();
        Response.Write(Cmd.Parameters["@Result"].Value);

    }

经历过这个,帮忙... How to run the stored procedure that has OUTPUT parameter from C#?

最佳答案

你只需将它设置为像这样的普通变量

    ALTER PROCEDURE [dbo].[usp_CheckEmailMobile](@Name VARCHAR(50), @Email NVARCHAR(50), @Password NVARCHAR(50), @CountryCode INT, @Mobile VARCHAR(50), @Result BIT OUTPUT)
    AS 
    BEGIN 


    IF EXISTS (SELECT COUNT (*) FROM AUser WHERE  [Email] = @Email AND [Mobile] = @Mobile) 
    BEGIN

    SELECT 'FALSE'; --Email &/or Mobile does not exist in database
    @Result = 0
    END
    ELSE
    BEGIN
     --Insert the record & register the user 
    INSERT INTO [AUser] ([Name], [Email], [Password], [CountryCode], [Mobile]) VALUES (@Name, @Email, @Password, @CountryCode, @Mobile)  

    @Result = 1
    END

    END

对于服务器端代码

SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
            con.Open();

            SqlCommand Cmd = new SqlCommand("usp_CheckEmailMobile", con);
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Parameters.AddWithValue("@Name", txtName.Text);
            Cmd.Parameters.AddWithValue("@Email", txtEmailAddress.Text);
            Cmd.Parameters.AddWithValue("@Password", txtPassword.Text);
            Cmd.Parameters.AddWithValue("@CountryCode", ddlCountryCode.Text);
            Cmd.Parameters.AddWithValue("@Mobile", txtMobileNumber.Text);
            SqlParameter sqlParam = new SqlParameter("@Result", DbType.Boolean);            
            sqlParam.Direction = ParameterDirection.Output;
            Cmd.Parameters.Add(sqlParam);
            Cmd.ExecuteNonQuery();
            con.Close();
            Response.Write(Cmd.Parameters["@Result"].Value);

关于asp.net - 使用位从存储过程返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15568251/

相关文章:

asp.net - IIS 的 URL 重写规则替换每个页面中的文件夹路径

c# - 在 Internet Explorer 8 和 9 中播放非 pcm (gsm) ".wav"-文件

asp.net - 无法使用 PayPal 立即购买按钮在 ASP.NET 中的单个页面上工作

stored-procedures - Firebird BLR 是否包含相关字段大小?

Mysql存储过程改变多个表结构

sql-server - 如何查看无法在 SQL Server 2008 R2 中修改的存储过程的定义?

ASP.Net 可移植服务器

SQL Server JOIN 不返回任何行

mysql - SQL JOIN 在单列中返回两个表

mysql - 拿两个表,一对多,我怎样才能过滤掉很多表,然后加入 1 表中的所有匹配项?