Click here to Skip to main content
15,919,893 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

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
 
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
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
 
Thanxx for help !!who tried to help me.
 
Share this answer
 
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
 
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
 
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
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.

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