Click here to Skip to main content
15,903,716 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Hi i am getting error in this case

This is my SP
SQL
ALTER PROCEDURE dbo.INSERT_USER
	
--	(
	@UserName varchar(50),
	@FirstName varchar(50),
	@LastName varchar(50),
	@Password  varchar(50),
	@Email varchar(50),
	@LastLogIn datetime, 
	@CreatedBy varchar(50),
	@MSG VARCHAR(10) OUT
	--@Active bit

--	)
	
AS

BEGIN
BEGIN TRY
	INSERT INTO Users 
	(UserName,FirstName,LastName,Password,Email,LastLogIn,CreatedBy,CreatedOn,Active
	)
	  VALUES    (
					@UserName,
					@FirstName,
					@LastName,
					@Password,  
					@Email,
				       GETDATE(),
					@CreatedBy,
					GETDATE(),			
					1
	            )
SET @MSG='SUCCESS'
END TRY
BEGIN CATCH
SET @MSG = 'FAILED'
END CATCH
END
--	RETURN



Code in DAL file


C#
public string InsertUsers(Business.Users objUsers)
        {
            string retUserInsert = string.Empty;
            try
            {
              
                using (SqlConnection conn = Connection.OpenConnection())
                {
                   
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = "INSERT_USER";
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Connection = conn;
                    SqlParameter[] sqlParams = new SqlParameter[10];

                    SqlParameter UserName = new SqlParameter("@UserName", objUsers.UserName);
                    UserName.Direction = System.Data.ParameterDirection.Input;
                    UserName.DbType = System.Data.DbType.String;
                    sqlParams[0] = UserName;

                    SqlParameter FirstName = new SqlParameter("@FirstName", objUsers.FirstName);
                    FirstName.Direction = System.Data.ParameterDirection.Input;
                    FirstName.DbType = System.Data.DbType.String;
                    sqlParams[1] = FirstName;

                    SqlParameter LastName = new SqlParameter("@LastName", objUsers.LastName);
                    LastName.Direction = System.Data.ParameterDirection.Input;
                    LastName.DbType = System.Data.DbType.String;
                    sqlParams[2] = LastName;

                    SqlParameter Password = new SqlParameter("@Password", objUsers.Password);
                    Password.Direction = System.Data.ParameterDirection.Input;
                    Password.DbType = System.Data.DbType.String;
                    sqlParams[3] = Password;

                    SqlParameter Email = new SqlParameter("@Email", objUsers.Email);
                    Email.Direction = System.Data.ParameterDirection.Input;
                    Email.DbType = System.Data.DbType.String;
                    sqlParams[4] = Email;

                    
                    SqlParameter LastLogIn = new SqlParameter("@LastLogIn", objUsers.LastLogIn);
                    LastLogIn.Direction = System.Data.ParameterDirection.Input;
                    LastLogIn.DbType = System.Data.DbType.DateTime;
                    sqlParams[5] = LastLogIn;
                    

                    SqlParameter CreatedBy = new SqlParameter("@CreatedBy", objUsers.CreatedBy);
                    CreatedBy.Direction = System.Data.ParameterDirection.Input;
                    CreatedBy.DbType = System.Data.DbType.String;
                    sqlParams[6] = CreatedBy;

                    SqlParameter CreatedOn = new SqlParameter("@CreatedOn", objUsers.CreatedOn);
                    CreatedOn.Direction = System.Data.ParameterDirection.Input;
                    CreatedOn.DbType = System.Data.DbType.DateTime;
                    sqlParams[7] = CreatedOn;                  

                    SqlParameter Active = new SqlParameter("@Active", objUsers.Active);
                    Active.Direction = System.Data.ParameterDirection.Input;
                    Active.DbType = System.Data.DbType.String;
                    sqlParams[8] = Active;
                    
                    SqlParameter Msg = new SqlParameter("@MSG", string.Empty);
                    Msg.DbType = System.Data.DbType.String;
                    Msg.Direction = System.Data.ParameterDirection.Output;
                    Msg.Size = 500;
                    sqlParams[9] = Msg;

                    cmd.Parameters.AddRange(sqlParams);
                    cmd.ExecuteNonQuery();
                    retUserInsert=Msg.Value.ToString();
                   //conn.Close();


                }
            }
            catch (Exception ex)
            {
                retUserInsert = "FAILED";
                log.Error(System.Reflection.MethodBase.GetCurrentMethod().ToString() + ex.StackTrace);
            }
            return retUserInsert;
        }


button click event code
C#
protected void btnRegister_Click(object sender, EventArgs e)
       {
           try
           {
               lblMsg.Text = "";
               if (Request.QueryString["UserID"] == null)
               {

                   objBusinessUI.FirstName = txtFirstName.Text;
                   objBusinessUI.LastName = txtlastName.Text;
                   objBusinessUI.UserName = txtFirstName.Text+" "+txtlastName.Text;
                   txtUserName.Text = objBusinessUI.UserName;
                   objBusinessUI.Email = txtEmail.Text;
                   objBusinessUI.Password = txtPass.Text;
                   objBusinessUI.LastLogIn = DateTime.Now;
                   objBusinessUI.CreatedBy = "Admin";
                   objBusinessUI.CreatedOn = DateTime.Now;
                   objBusinessUI.Active = "True";
                   string strMsg = objDataUserUI.InsertUsers(objBusinessUI);
                   if (strMsg=="SUCCESS")
                   {

                   }
                   else if (strMsg=="EMAILEXISTS")
                   {
                       lblMsg.Text = "Email already  exist";
                   }

                   else
                   {

                       lblMsg.Text = "Your registration could not be completed!Try again";

                   }



in this SP..after executing application ''Procedure or function INSERT_USER has too many arguments specified.'' excpetion
Posted
Updated 12-Sep-13 21:31pm
v3

You do not have a parameter called CreatedOn in your stored procedure, but you've created one in your parameter list.
 
Share this answer
 
Comments
indrajeet jadhav 13-Sep-13 1:06am    
I also try ..passing CreatedOn parameter called in SP.but is didnt work
Ron Beyer 13-Sep-13 1:08am    
But your stored procedure does not have a parameter called CreatedOn, the table does, but the stored procedure is using the GetDate function to automatically fill it in. Remove that parameter from your parameters in the C# code.
you have remaining in your store procedure

@CreatedOn Datetime
 
Share this answer
 
Comments
indrajeet jadhav 13-Sep-13 1:09am    
i tried..but it no works
Comment the follwing code from your DAL,

//SqlParameter CreatedOn = new SqlParameter("@CreatedOn", objUsers.CreatedOn);
//CreatedOn.Direction = System.Data.ParameterDirection.Input;
//CreatedOn.DbType = System.Data.DbType.DateTime;
//sqlParams[7] = CreatedOn;

//SqlParameter Active = new SqlParameter("@Active", objUsers.Active);
//Active.Direction = System.Data.ParameterDirection.Input;
//Active.DbType = System.Data.DbType.String;
//sqlParams[8] = Active;

As you are not passing @CreatedOn from parameter and also Active since you have commneted the @Active parameter.

Also change the index of @MSG 7 instead of 8.

Hope it works :)
 
Share this answer
 
SQL
ALTER PROCEDURE dbo.INSERT_USER
	
--	(
	@UserName varchar(50),
	@FirstName varchar(50),
	@LastName varchar(50),
	@Password  varchar(50),
	@Email varchar(50),
	@LastLogIn datetime, 
	@CreatedBy varchar(50),
	@MSG VARCHAR(10) OUT,
@CreatedOn datetime,
@active varchar(50)
	--@Active bit

--	)
	
AS
 
BEGIN
BEGIN TRY
	INSERT INTO Users 
	(UserName,FirstName,LastName,Password,Email,LastLogIn,CreatedBy,CreatedOn,Active
	)
	  VALUES    (
					@UserName,
					@FirstName,
					@LastName,
					@Password,  
					@Email,
				       GETDATE(),
					@CreatedBy,
					GETDATE(),			
					1
	            )
SET @MSG='SUCCESS'
END TRY
BEGIN CATCH
SET @MSG = 'FAILED'
END CATCH
END
--	RETURN




this is the new query of yours try this this will work the thing is your both c# and sql parameters must be matched :)
 
Share this answer
 
v2
ALTER PROCEDURE dbo.INSERT_USER

-- (
@UserName varchar(50),
@FirstName varchar(50),
@LastName varchar(50),
@Password varchar(50),
@EMAIL varchar(50),
@LastLogIn datetime,
@CreatedBy varchar(50),
@CreatedOn datetime,
@Active bit, //i add this field
@MSG VARCHAR(200) OUT
-- )

AS
DECLARE @uid int

BEGIN
BEGIN TRY

IF((SELECT COUNT(Email)FROM Users where Email=@EMAIL)<=0)
BEGIN

INSERT INTO Users
(UserName,
FirstName,
LastName,
Password,
Email,
LastLogIn,
CreatedBy,
CreatedOn,
Active) //here also
VALUES
(@UserName,
@FirstName,
@LastName,
@Password,
@Email,
GETDATE(),
@CreatedBy,
GETDATE(),
1) //Its bit value 1=true and 0=false here i wanna 1 for true

if(SCOPE_IDENTITY() IS NOT NULL)
BEGIN
SELECT @uid=UserID FROM Users
SET @MSG='SUCCESS'
END
END

else
BEGIN
SET @MSG='EMAILEXISTS'
END

END TRY
BEGIN CATCH
SET @MSG = 'FAILED'
END CATCH
END
RETURN



DAL layer
for insert method
public string InsertUsers(Business.Users objUsers)
{
string retUserInsert = string.Empty;
try
{

using (SqlConnection conn = Connection.OpenConnection())
{

SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT_USER";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = conn;
SqlParameter[] sqlParams = new SqlParameter[10];

SqlParameter UserName = new SqlParameter("@UserName", objUsers.UserName);
UserName.Direction = System.Data.ParameterDirection.Input;
UserName.DbType = System.Data.DbType.String;
sqlParams[0] = UserName;

SqlParameter FirstName = new SqlParameter("@FirstName", objUsers.FirstName);
FirstName.Direction = System.Data.ParameterDirection.Input;
FirstName.DbType = System.Data.DbType.String;
sqlParams[1] = FirstName;

SqlParameter LastName = new SqlParameter("@LastName", objUsers.LastName);
LastName.Direction = System.Data.ParameterDirection.Input;
LastName.DbType = System.Data.DbType.String;
sqlParams[2] = LastName;

SqlParameter Password = new SqlParameter("@Password", objUsers.Password);
Password.Direction = System.Data.ParameterDirection.Input;
Password.DbType = System.Data.DbType.String;
sqlParams[3] = Password;

SqlParameter Email = new SqlParameter("@Email", objUsers.Email);
Email.Direction = System.Data.ParameterDirection.Input;
Email.DbType = System.Data.DbType.String;
sqlParams[4] = Email;


SqlParameter LastLogIn = new SqlParameter("@LastLogIn", objUsers.LastLogIn);
LastLogIn.Direction = System.Data.ParameterDirection.Input;
LastLogIn.DbType = System.Data.DbType.DateTime;
sqlParams[5] = LastLogIn;


SqlParameter CreatedBy = new SqlParameter("@CreatedBy", objUsers.CreatedBy);
CreatedBy.Direction = System.Data.ParameterDirection.Input;
CreatedBy.DbType = System.Data.DbType.String;
sqlParams[6] = CreatedBy;

SqlParameter CreatedOn = new SqlParameter("@CreatedOn", objUsers.CreatedOn);
CreatedOn.Direction = System.Data.ParameterDirection.Input;
CreatedOn.DbType = System.Data.DbType.DateTime;
sqlParams[7] = CreatedOn;

SqlParameter Active = new SqlParameter("@Active", objUsers.Active);
Active.Direction = System.Data.ParameterDirection.Input;
Active.DbType = System.Data.DbType.String;
sqlParams[8] = Active;


SqlParameter Msg = new SqlParameter("@MSG", string.Empty);
Msg.DbType = System.Data.DbType.String;
Msg.Direction = System.Data.ParameterDirection.Output;
Msg.Size = 200;
sqlParams[9] = Msg;

cmd.Parameters.AddRange(sqlParams);
cmd.ExecuteNonQuery();
retUserInsert = Msg.Value.ToString();
//conn.Close();


}
}
catch (Exception ex)
{
retUserInsert = "FAILED";
log.Error(System.Reflection.MethodBase.GetCurrentMethod().ToString() + ex.StackTrace);
}
return retUserInsert;
}
 
Share this answer
 
Thanxx for help !!who tried to help me.
 
Share this answer
 
try this

public string InsertUsers(Business.Users objUsers)
{
string retUserInsert = string.Empty;
try
{

using (SqlConnection conn = Connection.OpenConnection())
{

SqlCommand cmd = new SqlCommand();
cmd.CommandText = "INSERT_USER";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = conn;
SqlParameter[] sqlParams = new SqlParameter[8];

SqlParameter UserName = new SqlParameter("@UserName", objUsers.UserName);
UserName.Direction = System.Data.ParameterDirection.Input;
UserName.DbType = System.Data.DbType.String;
sqlParams[0] = UserName;

SqlParameter FirstName = new SqlParameter("@FirstName", objUsers.FirstName);
FirstName.Direction = System.Data.ParameterDirection.Input;
FirstName.DbType = System.Data.DbType.String;
sqlParams[1] = FirstName;

SqlParameter LastName = new SqlParameter("@LastName", objUsers.LastName);
LastName.Direction = System.Data.ParameterDirection.Input;
LastName.DbType = System.Data.DbType.String;
sqlParams[2] = LastName;

SqlParameter Password = new SqlParameter("@Password", objUsers.Password);
Password.Direction = System.Data.ParameterDirection.Input;
Password.DbType = System.Data.DbType.String;
sqlParams[3] = Password;

SqlParameter Email = new SqlParameter("@Email", objUsers.Email);
Email.Direction = System.Data.ParameterDirection.Input;
Email.DbType = System.Data.DbType.String;
sqlParams[4] = Email;


SqlParameter LastLogIn = new SqlParameter("@LastLogIn", objUsers.LastLogIn);
LastLogIn.Direction = System.Data.ParameterDirection.Input;
LastLogIn.DbType = System.Data.DbType.DateTime;
sqlParams[5] = LastLogIn;


SqlParameter CreatedBy = new SqlParameter("@CreatedBy", objUsers.CreatedBy);
CreatedBy.Direction = System.Data.ParameterDirection.Input;
CreatedBy.DbType = System.Data.DbType.String;
sqlParams[6] = CreatedBy;

//SqlParameter CreatedOn = new SqlParameter("@CreatedOn", objUsers.CreatedOn);
//CreatedOn.Direction = System.Data.ParameterDirection.Input;
//CreatedOn.DbType = System.Data.DbType.DateTime;
//sqlParams[7] = CreatedOn;

//SqlParameter Active = new SqlParameter("@Active", objUsers.Active);
//Active.Direction = System.Data.ParameterDirection.Input;
//Active.DbType = System.Data.DbType.String;
//sqlParams[8] = Active;

SqlParameter Msg = new SqlParameter("@MSG", string.Empty);
Msg.DbType = System.Data.DbType.String;
Msg.Direction = System.Data.ParameterDirection.Output;
Msg.Size = 500;
sqlParams[7] = Msg;

cmd.Parameters.AddRange(sqlParams);
cmd.ExecuteNonQuery();
retUserInsert=Msg.Value.ToString();
//conn.Close();


}
}
catch (Exception ex)
{
retUserInsert = "FAILED";
log.Error(System.Reflection.MethodBase.GetCurrentMethod().ToString() + ex.StackTrace);
}
return retUserInsert;
}
 
Share this answer
 
In stored procedure you are using 8 parameters but in code you are passing 10 parameters. No of Parameters in Stored Procedure and code should be match.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900