VB.NET SQL删除查询不工作
我有一个大程序试图从我的SQL Server数据库中删除一条记录。我最初创建此代码是为了使用Microsoft Access,但是我决定将其转换为使用MS SQL 2008 这就是我所拥有的:VB.NET SQL删除查询不工作,.net,sql,vb.net,.net,Sql,Vb.net,我有一个大程序试图从我的SQL Server数据库中删除一条记录。我最初创建此代码是为了使用Microsoft Access,但是我决定将其转换为使用MS SQL 2008 这就是我所拥有的: Dim dbConnection As SqlConnection Dim dbCommand As SqlCommand Dim strSQL As String Dim dgvSelectRow As Integer 'Represents the selected row in the DataGr
Dim dbConnection As SqlConnection
Dim dbCommand As SqlCommand
Dim strSQL As String
Dim dgvSelectRow As Integer 'Represents the selected row in the DataGridView
Public Sub SQLConnect()
dbConnection = New SqlConnection("Data Source=w7gbnewmfg2143\sqlexpress;Initial Catalog=master_plan;Integrated Security=True")
dbConnection.Open()
End Sub
Public Sub SQLCommand()
dbCommand = New SqlCommand(strSQL, dbConnection)
End Sub
Public Sub SQLDisconnect()
dbConnection.Close()
End Sub
Private Sub btnRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemove.Click
If dgvLine1.RowCount = 0 Then
MsgBox("No Rows to Delete")
Else
dgvSelectRow = dgvLine1.CurrentRow.Index
If MsgBox("Are you sure to remove this job?", MsgBoxStyle.Critical + MsgBoxStyle.YesNo, "Remove Job") = MsgBoxResult.Yes Then
SQLConnect()
strSQL = "DELETE FROM [LinePlan] WHERE DateTime = '" & dgvLine1.Item(8, dgvSelectRow).Value & "'" 'Removes selected row from DataGridView at position column 8
SQLCommand()
dbCommand.ExecuteNonQuery()
SQLDisconnect()
tmrUpdate.Enabled = True
tmrUpdate.Start()
Else
End If
End If
End Sub
基本上,我正在尝试从DataGridView中的选定行中删除一条记录。在该行中,它删除my DGV中第列处的DateTime值。现在,当我在MS Access中创建这个查询时,我一点问题都没有,它工作得非常好。现在我已经将它迁移到MS SQL,我遇到了各种各样的问题。我得到了很多语法错误,我现在已经解决了(我想)。我一直在使用Catch-ex作为异常来尝试确定任何错误。我现在已经清除了所有错误。现在,当我单击remove按钮时,我没有收到任何错误,但是记录没有删除,它仍然保留在数据库中。程序不会崩溃或显示任何错误,看起来它已经完成了它需要做的事情,但它不会删除记录。我尝试过使用不同的连接字符串方法,但没有效果。我尝试过不使用变量,只是手动输入数据,但仍然没有成功
我是不是遗漏了什么?因为我想不出问题是什么。这似乎是一个非常直截了当的问题,也没想到会出什么问题,但我错了多少:)
任何帮助或指导都将不胜感激。谢谢你的时间
问候,,
James尝试使用参数化查询
strSQL = "DELETE FROM [LinePlan] WHERE DateTime = @dtValue"
SQLCommand()
dbCommand.Parameters.AddWithValue("@dtValue", Convert.ToDateTime(dgvLine1.Item(8, dgvSelectRow).Value)
dbCommand.ExecuteNonQuery()
这应该能更好地工作,因为您不需要将正确格式的datetime值传递给数据库引擎,而不需要尝试传递您认为数据库格式正确的字符串
。。。我忘了别的事了。。。。啊,是的,吻别我认为您的sql命令条件没有得到满足。比如DateTime='dgvLine1.Item(8,gvSelectRow).Value',或者DateTime的格式可能与您传递的参数不匹配。非常感谢您解决了我的问题,我非常感谢:)我将查看参数以提高我的知识。再次感谢!