从datagridview插入的数据未在SQL Server中更新

时间:2014-02-11 04:46:43

标签: sql sql-server vb.net datagridview

我还在调整vb.net环境,所以我想问一个问题..

我的代码在这里:

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

    Dim connstr As String = "server=supertelco\sqlexpress; database=testdb; user= sa; password=sa;"

    cmdconn = New SqlConnection
    cmd = New SqlCommand
    cmdconn.ConnectionString = connstr 'sqlstr
    cmd.Connection = cmdconn
    cmdconn.Open()

    Dim period, VOUCH_AMT, INDIVIDUAL_AMT, check_no, D_MAILED, DIR_NO, who_updated As String
    For i As Integer = 0 To Me.DataGridView2.Rows.Count - 1

        With Me.DataGridView2.Rows(i)

            If IsDBNull(.Cells(0).Value()) OrElse .Cells(0).Value() Is Nothing OrElse .Cells(0).Value().ToString().Trim() = "" Then
                period = ""
            Else
                period = .Cells(0).Value()
            End If
            If IsDBNull(.Cells(1).Value()) OrElse .Cells(1).Value() Is Nothing OrElse .Cells(1).Value().ToString().Trim() = "" Then
                VOUCH_AMT = "0"
            Else
                VOUCH_AMT = .Cells(1).Value()
            End If
            If IsDBNull(.Cells(2).Value()) OrElse .Cells(2).Value() Is Nothing OrElse .Cells(2).Value().ToString().Trim() = "" Then
                INDIVIDUAL_AMT = "0"
            Else
                INDIVIDUAL_AMT = .Cells(2).Value()
            End If
            If IsDBNull(.Cells(3).Value()) OrElse .Cells(3).Value() Is Nothing OrElse .Cells(3).Value().ToString().Trim() = "" Then
                check_no = ""
            Else
                check_no = .Cells(3).Value()
            End If
            If IsDBNull(.Cells(4).Value()) OrElse .Cells(4).Value() Is Nothing OrElse .Cells(4).Value().ToString().Trim() = "" Then
                D_MAILED = ""
            Else
                D_MAILED = .Cells(4).Value()
            End If
            If IsDBNull(.Cells(5).Value()) OrElse .Cells(5).Value() Is Nothing OrElse .Cells(5).Value().ToString().Trim() = "" Then
                DIR_NO = ""
            Else
                DIR_NO = .Cells(5).Value()
            End If
            If IsDBNull(.Cells(6).Value()) OrElse .Cells(6).Value() Is Nothing OrElse .Cells(6).Value().ToString().Trim() = "" Then
                who_updated = ""
            Else
                who_updated = .Cells(6).Value()
            End If



        End With

        cmd.CommandText = "insert into tobee.EBD_BILLHISTORY(period, vouch_amt, individual_amt, check_no, d_mailed, dir_no, who_updated)values" & _
            "('" & period.Replace("'", "''") & "'," & VOUCH_AMT & "," & INDIVIDUAL_AMT & ",'" & check_no.Replace("'", "''") & "','" & D_MAILED.Replace("'", "''") & "', '" & DIR_NO.Replace("'", "''") & "','" & who_updated.Replace("'", "''") & "')"
        cmd.ExecuteNonQuery()
        MsgBox("Saved")
    Next
    cmdconn.Close()

End Sub

所以是的,除了SQL Server中的更新之外,所有代码都能正常工作。我想知道为什么在点击保存按钮后我在dgv中所做的更改没有反映在数据库中?有人可以帮我这个吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我建议在将ExecuteNonQuery调用到剪贴板并在Sql Server Management Studio中执行之前复制cmd.CommandText的值...并查看会发生什么(错误消息)...除此之外你应该考虑一下使用SqlParameters ...