vb.net,mysql插入日期

时间:2015-03-07 16:43:30

标签: mysql database vb.net datetime

嗨我试图将日期从vb.net插入到我的sql数据库中,结果一直显示为00-00-00我使用日期时间选择器来获取结果为短的日期

Public Sub NewAppointment()

    SQLCommand.Connection = SQLconnection
    SQLCommand.CommandText = "INSERT INTO " & _
appointment(TattooID,Date,Time,Length,Deposit,Cost) VALUES"& _
 ('" & _Tattoo.ID & "','"& _
  " & AppDate.Date & "','" & _
  " & AppTime & "','" & _
  " & AppLength.ToString & "','" & _
  " & AppDespoit & "','" & AppCost & "');"


  SQLCommand.CommandType = CommandType.TableDirect

        Try
            SQLconnection.Open()
            SQLCommand.ExecuteNonQuery()
            SQLconnection.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        SQLconnection.Dispose()

End Sub

1 个答案:

答案 0 :(得分:1)

通常情况下,使用参数化查询

可以完全避免这些问题(以及其他问题)

这是一个示例,您需要为每个参数修复正确的数据类型( MySqlDbType )以匹配数据表字段的数据类型

SQLCommand.Connection = SQLconnection
SQLCommand.CommandText = "INSERT INTO " & _
    " appointment(TattooID,Date,Time,Length,Deposit,Cost) VALUES "& _
    " (@id, @appDate, @AppTime, @AppLength,@AppDespoit,@AppCost);"
SQLCommand.Parameters.Add("@id", MySqlDbType.VarChar).Value = _Tattoo.ID
SQLCommand.Parameters.Add("@AppDate", MySqlDbType.Date).Value = AppDate.Date 
SQLCommand.Parameters.Add("@AppTime", MySqlDbType.Date).Value = AppTime
SQLCommand.Parameters.Add("@AppLength", MySqlDbType.VarChar).Value = AppLength
SQLCommand.Parameters.Add("@AppDespoit", MySqlDbType.VarChar).Value = AppDespoit 
SQLCommand.Parameters.Add("@AppCost", MySqlDbType.VarChar).Value = AppCost 

现在,为日期字段获取正确值的作业将传递给接收Date类型参数的数据库引擎,并知道如何从参数中提取值并将其存储在相对字段中。

请注意您的查询现在更具可读性,并且作为额外的好处,您可以避免任何可能的Sql Injection