VB.NET SQL删除查询不工作

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

我有一个大程序试图从我的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 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的格式可能与您传递的参数不匹配。非常感谢您解决了我的问题,我非常感谢:)我将查看参数以提高我的知识。再次感谢!