Reputation: 21
I am trying to add data grid view rows into sql table but this error is showing although real data is saved:
The parameterized query '(@Name1 nvarchar(4000),@Dad nvarchar(4000),@Gender nvarchar(4000' expects the parameter '@Name1', which was not supplied.
I did research a lot, some say to add dbNull value and nothing happened. I also read MSN documents but can't understand enough.
cmd.CommandText = "Insert into Member values('" & txt_fserial_no.Text & "',@Name1,@DOB,@Gender,@Dad,@Relation,@NRC,@Citizen,@Job,@Race,@Country,@Religion)"
cmd.CommandType = CommandType.Text
' Dim adapFam As New SqlDataAdapter'
cmd.Parameters.Add("@Name1", SqlDbType.VarChar)
cmd.Parameters.Add("@Dad", SqlDbType.VarChar)
cmd.Parameters.Add("@Gender", SqlDbType.VarChar)
cmd.Parameters.Add("@DOB", SqlDbType.Date)
cmd.Parameters.Add("@Job", SqlDbType.VarChar)
cmd.Parameters.Add("@Race", SqlDbType.VarChar)
cmd.Parameters.Add("@Country", SqlDbType.VarChar)
cmd.Parameters.Add("@Religion", SqlDbType.VarChar)
cmd.Parameters.Add("@Relation", SqlDbType.VarChar)
cmd.Parameters.Add("@Citizen", SqlDbType.VarChar)
cmd.Parameters.Add("@NRC", SqlDbType.VarChar)
For i As Integer = 0 To datagrid_preview.Rows.Count - 1
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Name1", datagrid_preview.Rows(i).Cells(0).Value)
cmd.Parameters.AddWithValue("@Dad", datagrid_preview.Rows(i).Cells(1).Value)
cmd.Parameters.AddWithValue("@Gender", datagrid_preview.Rows(i).Cells(2).Value)
cmd.Parameters.AddWithValue("@DOB", datagrid_preview.Rows(i).Cells(3).Value)
cmd.Parameters.AddWithValue("@Job", datagrid_preview.Rows(i).Cells(4).Value)
cmd.Parameters.AddWithValue("@Race", datagrid_preview.Rows(i).Cells(5).Value)
cmd.Parameters.AddWithValue("@Country", datagrid_preview.Rows(i).Cells(6).Value)
cmd.Parameters.AddWithValue("@Religion", datagrid_preview.Rows(i).Cells(7).Value)
cmd.Parameters.AddWithValue("@Relation", datagrid_preview.Rows(i).Cells(8).Value)
cmd.Parameters.AddWithValue("@Citizen", datagrid_preview.Rows(i).Cells(9).Value)
cmd.Parameters.AddWithValue("@NRC", datagrid_preview.Rows(i).Cells(10).Value)
cmd.Connection = conn
cmd.ExecuteNonQuery()
'adapFam.InsertCommand.ExecuteNonQuery()'
Next
conn.Close()`][1]
Upvotes: 1
Views: 1842
Reputation: 71
Defined datatable as global which is use for insert your gridview raw into SQL Server table and that same is user for binding your gridview.
Pass dt
directly to your SQL Server stored procedure.
Create a function in SQL Server:
CREATE PROCEDURE [dbo].[Insert_xyz]
@tblxyz xyzType READONLY
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO xyz(Id, Name, Country)
SELECT Id, Name, Country
FROM @tblxyz
END
This is code for VB:
If dt.Rows.Count > 0 Then
Dim cons As String = ConfigurationManager.ConnectionStrings("xyz").ConnectionString
Using con As New SqlConnection(cons)
Using cmd As New SqlCommand("Insert_xyz")
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = con
cmd.Parameters.AddWithValue("@tblxyz", dt)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Using
End If
Sorry for my bad English :) I tried my best to explain you. :)
Upvotes: 0
Reputation: 364
I think this should work:
cmd.CommandText = "Insert into Member(id,Name1,Dad,Gender,DOB,Job,Race,Country,Religion,Relation,Citizen,NRC) values(@id,@Name1,@DOB,@Gender,@Dad,@Relation,@NRC,@Citizen,@Job,@Race,@Country,@Religion)"
cmd.CommandType = CommandType.Text
cmd.Connection = conn
For i As Integer = 0 To datagrid_preview.Rows.Count - 1
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@id", txt_fserial_no.Text)
cmd.Parameters.AddWithValue("@Name1", datagrid_preview.Rows(i).Cells(0).Value)
cmd.Parameters.AddWithValue("@Dad", datagrid_preview.Rows(i).Cells(1).Value)
cmd.Parameters.AddWithValue("@Gender", datagrid_preview.Rows(i).Cells(2).Value)
cmd.Parameters.AddWithValue("@DOB", datagrid_preview.Rows(i).Cells(3).Value)
cmd.Parameters.AddWithValue("@Job", datagrid_preview.Rows(i).Cells(4).Value)
cmd.Parameters.AddWithValue("@Race", datagrid_preview.Rows(i).Cells(5).Value)
cmd.Parameters.AddWithValue("@Country", datagrid_preview.Rows(i).Cells(6).Value)
cmd.Parameters.AddWithValue("@Religion", datagrid_preview.Rows(i).Cells(7).Value)
cmd.Parameters.AddWithValue("@Relation", datagrid_preview.Rows(i).Cells(8).Value)
cmd.Parameters.AddWithValue("@Citizen", datagrid_preview.Rows(i).Cells(9).Value)
cmd.Parameters.AddWithValue("@NRC", datagrid_preview.Rows(i).Cells(10).Value)
cmd.ExecuteNonQuery()
Next
Upvotes: 1