如何将datagridview中的datetime插入数据库? VB.NET

时间:2013-08-09 06:32:25

标签: vb.net function datetime datagridview insert

我希望从datagridview到数据库插入日期时间。但是我不需要保存。

实施例

Datagridview
DAte
2012-11-20 16:36:39

when i'm save to datagridview to datebase
DAte
1900-01-01 00:00:00.000

我想将2012-11-20 16:36:39保存到dataasbe,但不会导致结果。

显示Datagridview

    Dim sqlSentMaterial As String = ""
    Dim DT_SentMaterial As New DataTable

    sqlSentMaterial = "SELECT rc.No,rc.ReceiveDate as RCReceiveDate,rc.CreateBy as RCReceiveBy,rc.CreateDate,rc.ReceiveNote "
    sqlSentMaterial &= "FROM RClother rc "
    sqlSentMaterial &= "Where rc.No ='" & Search & "'"
    DT_SentMaterial = FShowData(sqlSentMaterial)

   For i As Integer = 0 To DT_SentMaterial.Rows.Count - 1
        If DT_SentMaterial.Rows.Count <> 0 Then
            Dim item As New DataGridViewRow
            item.CreateCells(DgvSentMaterial)
            With item
                .Cells(1).Value = TxtBarcode.Text 
                If DT_SentMaterial.Rows(0).Item("RCReceiveDate") Is DBNull.Value Then
                    .Cells(2).Value = ""
                Else
                    .Cells(2).Value = CDate(DT_SentMaterial.Rows(0).Item("RCReceiveDate")).ToString("dd/MM/yyyy")
                End If
            End With
            DgvSentMaterial.Rows.Add(item)
            Exit For
        End If
    Next

将data datagridview保存到数据库

Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
Dim sentMat As Integer

sentMat = FInsertSentMatClother(CInt(DgvSentMaterial.Rows(i).Cells(1).Value), CDate(DgvSentMaterial.Rows(i).Cells(2).Value))
End Sub

功能插入数据库

Public Function FInsert_iPOSentMatClother(ByVal BarCode As Integer, ByVal RCReceiveDate As Date)

        Dim Tr As SqlTransaction
        Dim sqlCom As New SqlCommand

        Dim sqlInsert As String
        Dim ReturnValue As Integer
        Dim GetDate As DateTime = DateTime.Now

        Try
            Tr = Conn.BeginTransaction
            sqlCom.Connection = Conn


            sqlInsert = "INSERT INTO SentMatClother "
            sqlInsert &= "(BarCode,ReceiveDate) "
            sqlInsert &= "VALUES('" & BarCode & "','" & RCReceiveDate & "')"

            sqlCom.Transaction = Tr
            sqlCom.CommandText = sqlInsert
            sqlCom.CommandType = CommandType.Text

            ReturnValue = CInt(sqlCom.ExecuteScalar) 'CInt(sqlCom.ExecuteScalar)
            If ReturnValue = 0 Then
                Tr.Commit()
            Else
                Tr.Rollback()
            End If
        Catch ex As Exception
            'MsgBox(ex.ToString)
        Finally
            If Not sqlCom Is Nothing Then
                sqlCom.Dispose()
            End If
            sqlCom = Nothing
        End Try
        Return ReturnValue

    End Function

谢谢你的时间。 :)

1 个答案:

答案 0 :(得分:0)

在您的Function insert to database中,只需格式化字符串中的日期值

sqlInsert = "INSERT INTO SentMatClother "
sqlInsert &= "(BarCode,ReceiveDate) "
sqlInsert &= "VALUES('" & BarCode & "','" & RCReceiveDate.ToString("yyyy-MM-dd HH:mm:ss") & "')"

或者我认为使用参数是一种更好的做法:

sqlInsert = "INSERT INTO SentMatClother (BarCode,ReceiveDate) VALUES (@barCode, @receiveDate)"

//then add parameters to your sqlCommand

sqlCom.Parameters.AddWithValue("@barCode", BarCode)
sqlCom.Parameters.AddWithValue("@barCode", RCReceiveDate)