|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
STRANGE PROBLEMpressing f11. im looping SqlCommand in a while loop. The First step runs but when a enter 2nd step in my loop it returns error ? ) any idea ? System.Data.SqlClient.SqlException: Procedure or function sp_adduser has too many arguments specified My Stored Procedure CREATE PROCEDURE ST_BOTMARKA @SiteID INT, @Marka NVARCHAR (255), @MarkaLink NVARCHAR (500), @Tarih NVARCHAR (300) AS IF Exists( SELECT 1 FROM TBL_BOTMARKALAR Where MarkaAdi=@Marka AND SiteID=@SiteID) UPDATE TBL_BOTMARKALAR SET MarkaLink=@MarkaLink,Tarih=@Tarih ELSE INSERT INTO TBL_BOTMARKALAR (SiteID,MarkaAdi,MarkaLink,Tarih) Values (@SiteID,@Marka,@MarkaLink,@Tarih) GO con.ConnectionString = "Initial Catalog=saat;User Id=sates52;password=abc;Data Source=127.0.0.1"; Today = ConvertDateFunction(System.DateTime.Now); while (true) { con.Open (); cmd.Connection =con; cmd.CommandType =CommandType.StoredProcedure; cmd.CommandText ="ST_BOTMARKA"; cmd.Parameters.Add ("@SiteID",SqlDbType.Int).Value=1; cmd.Parameters.Add ("@Marka",SqlDbType.NVarChar).Value=Marka; cmd.Parameters.Add ("@MarkaLink",SqlDbType.NVarChar).Value=MarkaLink; cmd.Parameters.Add ("@Tarih",SqlDbType.NVarChar).Value=Today; try { cmd.ExecuteNonQuery (); } catch (Exception e) { MessageBox.Show (e.ToString()); } cmd.Dispose(); con.Close(); } Are you re-using a command without Clear()ing the parameters first?
Alternatively, if performing the same command with different parameter-values, then add them *once* at the top, and then in the loop just update the values of each parameter as required. Marc Thank you for your reply
I used cmd.Dispose(); hoping to clear all data which cmd object is keeping. I used cmd.Parameters.Clear (); and it worked. <in da club>, haber iletisinde þunlarý yazdý:OuHz2U5QHHA.***@TK2MSFTNGP05.phx.gbl... Show quote > Im getting that error (It is strange. I Run my programme step by step > pressing f11. im looping SqlCommand in a while loop. The First step runs > but when a enter 2nd step in my loop it returns error ? ) > > any idea ? > > System.Data.SqlClient.SqlException: Procedure or function sp_adduser has > too many arguments specified > > My Stored Procedure > > CREATE PROCEDURE ST_BOTMARKA > @SiteID INT, > @Marka NVARCHAR (255), > @MarkaLink NVARCHAR (500), > @Tarih NVARCHAR (300) > AS > > IF Exists( SELECT 1 FROM TBL_BOTMARKALAR Where MarkaAdi=@Marka AND > SiteID=@SiteID) > UPDATE TBL_BOTMARKALAR SET MarkaLink=@MarkaLink,Tarih=@Tarih > ELSE > INSERT INTO TBL_BOTMARKALAR (SiteID,MarkaAdi,MarkaLink,Tarih) Values > (@SiteID,@Marka,@MarkaLink,@Tarih) > GO > > > > > con.ConnectionString = "Initial Catalog=saat;User > Id=sates52;password=abc;Data Source=127.0.0.1"; > > > > Today = ConvertDateFunction(System.DateTime.Now); > > while (true) > > { > > con.Open (); > > cmd.Connection =con; > > cmd.CommandType =CommandType.StoredProcedure; > > cmd.CommandText ="ST_BOTMARKA"; > > cmd.Parameters.Add ("@SiteID",SqlDbType.Int).Value=1; > > cmd.Parameters.Add ("@Marka",SqlDbType.NVarChar).Value=Marka; > > cmd.Parameters.Add ("@MarkaLink",SqlDbType.NVarChar).Value=MarkaLink; > > cmd.Parameters.Add ("@Tarih",SqlDbType.NVarChar).Value=Today; > > try > > { > > cmd.ExecuteNonQuery (); > > } > > catch (Exception e) > > { > > MessageBox.Show (e.ToString()); > > } > > cmd.Dispose(); > > con.Close(); > > } > > |
|||||||||||||||||||||||