mysql - 将数据 GridView 行添加到 vb.net 中的 sql 表

标签 mysql sql-server vb.net gridview dbnull

我正在尝试将数据 GridView 行添加到 sql 表中,但是 this error尽管保存了真实数据,但正在显示:

The parameterized query '(@Name1 nvarchar(4000),@Dad nvarchar(4000),@Gender nvarchar(4000' expects the parameter '@Name1', which was not supplied.

我做了很多研究,有人说要添加 dbNull 值但没有任何反应。我也看了MSN文档,但还是看不懂。

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]

最佳答案

我认为这应该可行:

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

关于mysql - 将数据 GridView 行添加到 vb.net 中的 sql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44321042/

相关文章:

sql-server - 将整个数据库 varchar 转换为大写

wpf - 如何将 CollectionContainer 绑定(bind)到 View 模型中的集合?

c# - 在事务中执行 SQL 更新批处理

vb.net - 更改高度引用类的命名空间的最佳方法是什么?

sql-server - 动态 XML 到存储过程插入

mysql - 表中有实际但重复的数据或引用其 id 并运行两个查询或更复杂的查询?

php - MySQL SUM time(3) 以毫秒为单位

php - 查询进入无限循环

mysql - 如何在mysql中的第一个表中找到记录的最后一条记录

sql-server - 使用经典 ASP 将文件上传到 SQL 数据库