ExecuteNonQuery Problem
-
i want to insert some datas to my database from my datatable.i created a stored procedure for that like that
ALTER proc sp_VeriEkle
(
@cek_no nvarchar(10),
@cek_tarih nvarchar(20),
@num1 nvarchar(10),
@num2 nvarchar(10),
@num3 nvarchar(10),
@num4 nvarchar(10),
@num5 nvarchar(10),
@num6 nvarchar(10)
)
as
Begin
Insert into NumaraBilgileri(cekilis_no,cekilis_tarihi,num1,num2,num3,num4,num5,num6) values (@cek_no,@cek_tarih,@num1,@num2,@num3,@num4,@num5,@num6)
Endand my codes like below to insert
for (int i = 0; i < table.Rows.Count; i++) { cmd.Parameters.AddWithValue("@cek\_no", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[0\].ToString(); cmd.Parameters.AddWithValue("@cek\_tarih", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[1\].ToString(); cmd.Parameters.AddWithValue("@num1", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[4\].ToString(); cmd.Parameters.AddWithValue("@num2", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[5\].ToString(); cmd.Parameters.AddWithValue("@num3", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[6\].ToString(); cmd.Parameters.AddWithValue("@num4", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[7\].ToString(); cmd.Parameters.AddWithValue("@num5", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[8\].ToString(); cmd.Parameters.AddWithValue("@num6", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[9\].ToString(); cmd.ExecuteNonQuery();
but here after adding first row it gives error like "Procedure or function sp_VeriEkle" has too many specified arguments and it shows as a wrong line cmd.ExecuteNonQuery().what is wrong here for second row ?
-
i want to insert some datas to my database from my datatable.i created a stored procedure for that like that
ALTER proc sp_VeriEkle
(
@cek_no nvarchar(10),
@cek_tarih nvarchar(20),
@num1 nvarchar(10),
@num2 nvarchar(10),
@num3 nvarchar(10),
@num4 nvarchar(10),
@num5 nvarchar(10),
@num6 nvarchar(10)
)
as
Begin
Insert into NumaraBilgileri(cekilis_no,cekilis_tarihi,num1,num2,num3,num4,num5,num6) values (@cek_no,@cek_tarih,@num1,@num2,@num3,@num4,@num5,@num6)
Endand my codes like below to insert
for (int i = 0; i < table.Rows.Count; i++) { cmd.Parameters.AddWithValue("@cek\_no", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[0\].ToString(); cmd.Parameters.AddWithValue("@cek\_tarih", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[1\].ToString(); cmd.Parameters.AddWithValue("@num1", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[4\].ToString(); cmd.Parameters.AddWithValue("@num2", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[5\].ToString(); cmd.Parameters.AddWithValue("@num3", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[6\].ToString(); cmd.Parameters.AddWithValue("@num4", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[7\].ToString(); cmd.Parameters.AddWithValue("@num5", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[8\].ToString(); cmd.Parameters.AddWithValue("@num6", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[9\].ToString(); cmd.ExecuteNonQuery();
but here after adding first row it gives error like "Procedure or function sp_VeriEkle" has too many specified arguments and it shows as a wrong line cmd.ExecuteNonQuery().what is wrong here for second row ?
erdinc27 wrote:
for (int i = 0; i < table.Rows.Count; i++) { cmd.Parameters.AddWithValue("@cek_no", System.Data.SqlDbType.NVarChar).Value = table.Rows[i][0].ToString();
Creating a parameter inside loop indicates you are creating same parameter with the same name again and again. So my advice would be to declare parameter outside a loop and then set values only of that inside loop. E.G.
cmd.parameters.add(\\add parameter name with datatype here);
Loop
{
cmd.parameters["\\name of the parameter"].Value = \\Set value here.
}Thanks.
Regards, Hiren. "The more we give of anything, the more we shall get back." - Grace Speare (you can consider this quote while giving vote also) Microsoft Dynamics CRM
-
i want to insert some datas to my database from my datatable.i created a stored procedure for that like that
ALTER proc sp_VeriEkle
(
@cek_no nvarchar(10),
@cek_tarih nvarchar(20),
@num1 nvarchar(10),
@num2 nvarchar(10),
@num3 nvarchar(10),
@num4 nvarchar(10),
@num5 nvarchar(10),
@num6 nvarchar(10)
)
as
Begin
Insert into NumaraBilgileri(cekilis_no,cekilis_tarihi,num1,num2,num3,num4,num5,num6) values (@cek_no,@cek_tarih,@num1,@num2,@num3,@num4,@num5,@num6)
Endand my codes like below to insert
for (int i = 0; i < table.Rows.Count; i++) { cmd.Parameters.AddWithValue("@cek\_no", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[0\].ToString(); cmd.Parameters.AddWithValue("@cek\_tarih", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[1\].ToString(); cmd.Parameters.AddWithValue("@num1", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[4\].ToString(); cmd.Parameters.AddWithValue("@num2", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[5\].ToString(); cmd.Parameters.AddWithValue("@num3", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[6\].ToString(); cmd.Parameters.AddWithValue("@num4", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[7\].ToString(); cmd.Parameters.AddWithValue("@num5", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[8\].ToString(); cmd.Parameters.AddWithValue("@num6", System.Data.SqlDbType.NVarChar).Value = table.Rows\[i\]\[9\].ToString(); cmd.ExecuteNonQuery();
but here after adding first row it gives error like "Procedure or function sp_VeriEkle" has too many specified arguments and it shows as a wrong line cmd.ExecuteNonQuery().what is wrong here for second row ?
-
erdinc27 wrote:
for (int i = 0; i < table.Rows.Count; i++) { cmd.Parameters.AddWithValue("@cek_no", System.Data.SqlDbType.NVarChar).Value = table.Rows[i][0].ToString();
Creating a parameter inside loop indicates you are creating same parameter with the same name again and again. So my advice would be to declare parameter outside a loop and then set values only of that inside loop. E.G.
cmd.parameters.add(\\add parameter name with datatype here);
Loop
{
cmd.parameters["\\name of the parameter"].Value = \\Set value here.
}Thanks.
Regards, Hiren. "The more we give of anything, the more we shall get back." - Grace Speare (you can consider this quote while giving vote also) Microsoft Dynamics CRM
-
erdinc27 wrote:
for (int i = 0; i < table.Rows.Count; i++) { cmd.Parameters.AddWithValue("@cek_no", System.Data.SqlDbType.NVarChar).Value = table.Rows[i][0].ToString();
Creating a parameter inside loop indicates you are creating same parameter with the same name again and again. So my advice would be to declare parameter outside a loop and then set values only of that inside loop. E.G.
cmd.parameters.add(\\add parameter name with datatype here);
Loop
{
cmd.parameters["\\name of the parameter"].Value = \\Set value here.
}Thanks.
Regards, Hiren. "The more we give of anything, the more we shall get back." - Grace Speare (you can consider this quote while giving vote also) Microsoft Dynamics CRM
thak u for your help guys..it works good now
-
It is because you are adding the seconds row parameters to the existing list or command parameters. Try creating your cmd instance inside of the for loop
Life goes very fast. Tomorrow, today is already yesterday.