【问题标题】:Insert Date And Time VB into Database Table将日期和时间 VB 插入数据库表
【发布时间】:2012-12-02 04:05:05
【问题描述】:

我正在使用 DateTimePicker 来选择日期,以及一个有时间的 TextBox。

我正在尝试将两个值都插入到表中,但它不起作用

INSERT INTO dt (date) VALUES('" & DateTimePicker1.Text  & TextBox1.Text & "');

date 列属于datetime 类型。

代码显示此错误:从字符串转换日期时间时转换失败

【问题讨论】:

  • TextBox.Text 的值是多少?如果这是 vb.net,为什么你有一个分号?
  • 文本框的值为 12:50 ,我从 sql express 复制了语句,这就是分号存在的原因
  • 请在问题中包含您遇到的错误。

标签: database vb.net date time


【解决方案1】:

您真的不想将日期时间作为字符串传递给您的数据库,因为它们的表示形式存在文化差异。相反,您可以使用参数传递日期时间类型。对于 SQL Server,您需要类似于

Dim dt As DateTime
dt = DateTimePicker1.Value.Date ' use only the date portion '
Dim tim As DateTime
If DateTime.TryParse(TextBox1.Text, tim) Then
    dt = dt + tim.TimeOfDay ' use only the time portion '
Else
    MsgBox("Could not understand the value in the time box. Using midnight.")
End If

Dim sql As String = "INSERT INTO dt (date) VALUES (@DateTime)"

Dim sqlCmd As New SqlCommand(sql, sqlConn)
sqlCmd.Parameters.Add(New SqlParameter With {.ParameterName = "@DateTime", .SqlDbType = SqlDbType.DateTime, .Value = dt})
'TODO: ExecuteNonQuery

【讨论】:

  • 我在上面的代码中添加了连接并打开了连接,但是没有用,我应该添加什么?
  • @Legend-Lb 您需要向我们展示您正在使用的实际代码并扩展“它不起作用” - 您是否收到错误消息,没有发生任何事情或......
  • +1。你是对的,参数是最终的解决方案。我们总是在生产代码中使用它们。
【解决方案2】:

两个文本框的文本之间需要一个空格:

insert into dt (date) values('" & DateTimePicker1.Text & " " & TextBox1.Text & "')

【讨论】:

  • 它显示一个错误,它说从字符串转换日期时间时转换失败
【解决方案3】:

您的日期必须经过格式化,才能将某种文化正确插入数据库。或者只使用文化中性字符串,例如dd-MMM-yyyy

您的第一步是从DateTimePicker1.TextTextBox1.Text 创建一个DateTime - 您可以使用ParseExact。然后将您的 DateTime 格式化为 .ToString("G") - 查看 MSDN 上的这篇文章了解更多标准格式:Standard Date and Time Format Strings

描述了类似的问题here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-06
    • 2015-12-31
    • 2018-05-18
    • 2012-05-01
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多