gpt4 book ai didi

mysql - 如何在 MySQL 中保存准确的日期时间

转载 作者:行者123 更新时间:2023-11-29 19:05:33 27 4
gpt4 key购买 nike

我有一个 VB.Net 项目,我想在我的 MSQL 数据库中保存准确的日期时间。但我无法捕捉时间和日期。

预期行为:在 DB 12-03-2012 01:03:23

当前行为:在 DB 12-03-2012 00:00:00

下面的代码片段:

Dim temp = System.DateTime.Now
Code(temp)

Public Sub Code(ByVal dte As DateTime)
Dim strSQl As String = String.Format("Update tblTenant Set dte = '{0}' blablalbla", dte)
Me._Inst.execSQL(strSQl)
End Sub

编辑数据库中的列类型是DATETIME

最佳答案

我不确定您的 execSQL() 方法是如何构建的,但将变量数据直接替换为 SQL 查询字符串是不正常的或根本没问题。这是让你的程序被黑的好方法。相反,您需要一种机制来分别接受数据并将数据发送到服务器。通常看起来像这样:

Public Sub execSQL(ByVal SQL As String, Optional ByVal ParamArray QueryParameters() As MySqlParameter)
Using cn As New MySqlConnection("connection string here"), _
cmd As New MySqlCommand(SQL, cn)

If QueryParameters IsNot Nothing Then
For Each p As MySqlParameter In QueryParameters
'This does NOT EVER do string manipulation to set the data into the query
' Instead, it's sent to the server in a separate data section, where the variables are setup.
' In this way, data stays separate from code, and any possibility of sql injection is prevented.
cmd.Parameters.Add(p)
Next
End If
cn.Open()
cmd.ExecuteNonQuery()
End Using
End Sub

然后你这样调用它:

Public Sub Code(ByVal dte As DateTime)
Dim strSQl As String = "Update tblTenant Set dte = @dte blablalbla"
Dim dteParam As New MySqlParameter("@dte", MySqlDbType.DateTime)
dteParam.Value = dte
Me._Inst.execSQL(strSQl, dteParam)
End Sub

我见过很多情况,切换到查询参数也解决了令人烦恼的格式或语法问题,所以我相信在这里使用查询参数很可能会解决引发您问题的问题。

关于mysql - 如何在 MySQL 中保存准确的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43544332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com