Kyaw Zin Thant
Kyaw Zin Thant

Reputation: 21

adding data grid view rows to sql tables in vb.net

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

Answers (2)

PTank
PTank

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

muffi
muffi

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

Related Questions