2013-03-22 45 views
0

这是我用于检查电子邮件可用性的存储过程的代码。使用位从存储过程返回布尔值

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#?

+0

这将是有用的:[如何从存储过程返回布尔](http://stackoverflow.com/questions/3825620/how-to-return- bool-from-stored-proc) – Habib 2013-03-22 10:39:55

+0

通过这个已经存在,DINT帮助... – adityawho 2013-03-22 10:46:30

+0

尝试使用此方法获取值 Cmd.ExecuteNonQuery(); con.Close(); cmd.Parameters [“@ Result”]。Value; – 2013-03-22 11:19:02

回答

2

你只要将其设置为像这样的正常变量

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); 
+0

请检查我的CS ... – adityawho 2013-03-22 11:06:24

1

这样做:

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

Declare @result bit 

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

Set @result=0; --Email &/or Mobile does not exist in database 
End 
ELSE 
Begin 
--Insert the record & register the user 
INSERT INTO [AUser] ([Name], [Email], [Password], [CountryCode], [Mobile]) VALUES (@Name, @Email, @Password, @CountryCode, @Mobile) 

Set @result=1 --True 
End 

Select @result as Result 
END 

CS代码:

bool? IsSuccess= YourDBObject.usp_CheckEmailMobile(all params).FirstOrDefault().Result; 
+0

你能帮我用CS代码吗? – adityawho 2013-03-22 10:58:21

+0

检查更新的答案。 – 2013-03-22 11:01:01

+0

请检查我的CS代码..... – adityawho 2013-03-22 11:04:56