SQL错误关于在查询中使用参数的datagridview中的撇号


Dim sc = datagridview.rows(0).cells(0).value
cmd = New SqlCommand("insert into Schedule (Name) values(@sc)", con)
with cmd
.Connection = con
.CommandType = CommandType.Text
.Parameters.AddWithValue("@sc", sc.cells(0))
end with

datagrid视图中的值包含一个撇号,我在(的(中得到一个错误。有什么办法吗?

编辑:这就是错误:

SqlException未得到处理。"s"附近的语法不正确。

编辑2:我已经将代码修改为:

for 1=0 to datagridview.rows.count -1 
Dim tname = datagridview.Rows(i)
cmd = New SqlCommand("insert into Schedule (Name) values(@sc)", con)
with cmd
.Connection = con
.CommandType = CommandType.Text
.Parameters.AddWithValue("@sc", sc.cells(0).value) 
end with
con.Close() 
con.Open()  
If Not cmd.ExecuteNonQuery() > 0 Then
con.Close()
Exit For
End If
next

错误仍然是一样的。

当它一次快速遍历所有值时,我会进行一次连接,并在每次迭代中更改参数值,如下所示:

Dim sql = "INSERT INTO [Schedule] ([Name]) VALUES(@sc)"
Using conn As New SqlConnection("your connection string"),
cmd As New SqlCommand(sql, conn)
cmd.Parameters.Add(New SqlParameter With {.ParameterName = "@sc",
.SqlDbType = SqlDbType.NVarChar,
.Size = -1})
conn.Open()
For i = 0 To dgv.Rows.Count - 1
Dim tname = dgv.Rows(i).Cells(0).Value.ToString()
cmd.Parameters("@sc").Value = tname
cmd.ExecuteNonQuery()
Next
End Using

在声明中包含参数的大小有助于SQL Server保持整洁(它只需要查询缓存中的一个条目(。

Using语句确保连接和命令在完成时得到正确处理。

我不清楚检查If Not cmd.ExecuteNonQuery() > 0的目的,所以我没有把它放进去。(我用"dgv"作为DataGridView的名称。(

尝试替换""由"">


Dim sc = datagridview.rows(0).cells(0).value
cmd = New SqlCommand("insert into Schedule (Name) values(@sc)", con)
with cmd
.Connection = con
.CommandType = CommandType.Text
.Parameters.AddWithValue("@sc", replace(sc.cells(0), "'", "''")
end with

/****编辑****/顺便说一下,我认为您的代码在值的做作方面存在问题。您将值输入SC,然后尝试再次从单元格中获取值

Dim sc = datagridview.rows(0).cells(0).value
cmd = New SqlCommand("insert into Schedule (Name) values(@sc)", con)
with cmd
.Connection = con
.CommandType = CommandType.Text
.Parameters("@sc").value = sc.replace("'", "''")
end with

相关内容

最新更新