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
資料網格視圖中的值包含一個撇號,在 ('s) 中出現錯誤。有什么解決方法嗎?
編輯:這是錯誤:
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
錯誤還是一樣。
uj5u.com熱心網友回復:
當它一次快速地遍歷所有值時,我會建立一次連接并更改每次迭代的引數值,如下所示:
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的名稱。)
uj5u.com熱心網友回復:
嘗試將“'”替換為“''”
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
/**** EDIT ****/ 我會順便考慮一下您的代碼在值的影響方面存在問題。您將值輸入 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/454289.html
