gpt4 book ai didi

sql - 来自 DateTimePicker 的 SQL 字符串中的日期

转载 作者:行者123 更新时间:2023-12-02 09:36:42 27 4
gpt4 key购买 nike

我试图将 VB.Net 中 Windows 窗体中的 DateTimePicker 中的日期插入到 SQL 字符串中,使其将其识别为日期时间(该字段本身在 SQL Server 中设置为日期时间)。

我尝试了几种方法(在 SQL 级别进行Convert,在 VB.Net 级别进行Format),现在使用存储为 DateTime 的变量code>,但是我仍然无法让它工作。我的代码片段如下:

Using sqlConn = New SqlConnection(My.Settings.sqlString)
sqlConn.Open()
Dim dte As DateTime = Convert.ToDateTime(Me.dateMain.Text)
Dim cmd As SqlCommand
cmd = sqlConn.CreateCommand
cmd.CommandText = "Update Table1 " &
"SET Person='" & Me.person.Text & "'," &
"Date='" & dte & "' " &
"WHERE (Code = '" & PCode & "')"
cmd.ExecuteNonQuery()
cmd = Nothing
End Using

编辑:以下错误(或略有变化)是我几乎每次尝试都遇到的错误。在下面提交参数化答案后收到此错误

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

Additional information: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

所以看起来即使如此,它也没有将其识别为 SQL 中的日期时间。我想我需要在 SQL 字符串中再次尝试使用 Convert,但我对该函数的了解有限。有人知道我如何使用它来使其正常工作(如果这是解决方案)?

最佳答案

听起来像是参数化的工作!

Using sqlConn = New SqlConnection(My.Settings.sqlString)
sqlConn.Open()
Dim cmd As SqlCommand
cmd = sqlConn.CreateCommand
cmd.CommandText = "Update Table1 " &
"SET Person = @person, " &
"Date = @dte " &
"WHERE (Code = @code)"
cmd.Parameters.AddWithValue("@person", Me.person.Text)
cmd.Parameters.AddWithValue("@dte", Me.dateMain.Value)
cmd.Parameters.AddWithValue("@code", PCode)
cmd.ExecuteNonQuery()
cmd = Nothing
End Using

当你在做的时候,我不想改变太多,因为我一生中从未写过一行 VB (所以这也可能是正确的,也可能不正确,如果不正确请告诉我无法编译或其他东西,但这就是要点),但是 SqlCommand 确实实现了 IDisposable,因此您可能应该将其包装在 Using 中:好吧。

参数化您的查询将消除您遇到的错误,促进代码重用,并且可以说最重要的是,阻止 SQL 注入(inject)攻击。为了我们的利益,请始终使用参数。

关于sql - 来自 DateTimePicker 的 SQL 字符串中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280661/

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