SQLite 和 .net 字符串未被识别为有效的 DateTime
Posted
技术标签:
【中文标题】SQLite 和 .net 字符串未被识别为有效的 DateTime【英文标题】:SQLite and .net String was not recognized as a valid DateTime 【发布时间】:2013-01-29 17:11:09 【问题描述】:我正在使用 VB.NET 和 VS 2008,但在选择日期时遇到问题。
在约会主表中有 2 个字段,StartDate 和 CustomerName
StartDate 包含以这种方式格式化的日期..
2013-01-29 11:16:41
Dim strSQL As String = "select * from AppointmentsMain"
如上所述选择所有内容并通过 DataReader 读取会引发错误。如果我只选择 customername 字段,它可以正常工作。
我正在使用System.Data.SQLite
包装器。
下面是代码。它在 msgbox 上中断。 试试
Dim cn As SQLiteConnection
Dim cmd As SQLiteCommand
Dim rdr As SQLiteDataReader
Dim strSQL As String = "select * from AppointmentsMain"
cn = New SQLiteConnection(strPublicConnectionString)
cn.Open()
cmd = New SQLiteCommand(strSQL, cn)
rdr = cmd.ExecuteReader
If rdr.Read Then
MsgBox(rdr("startdate"))
End If
rdr.Close()
cn.Close()
Catch ex As Exception
End Try
【问题讨论】:
你看到using a datareader to read dates上的问题了吗?它可能适用。 显示抛出错误的代码 问题是特定于 SQLite 处理日期的方式。该代码使用 MSSQL 运行良好.. 【参考方案1】:rdr("startdate") 返回什么?这是空的吗?不能解析成字符串吗?
【讨论】:
哎呀这应该是评论【参考方案2】:正如 Matthew 所说,首先要检查的是 rdr("startdate")
返回的值。您的问题将其称为StartDate
,但您的代码将其称为startdate
,因此可能与区分大小写有关。您可以尝试改用rdr("StartDate")
。
【讨论】:
代码使用 MSSQL 或 SQLServerCE 名称空间可以正常工作。换句话说,使用 System.Data.SQLClient 或 System.Data.SQLCe 及其数据读取器(当然还有数据库)没有问题。当问题发生时,切换到 System.Data.SQLite 并使用 SQLite db。 @user2022504 您是否尝试过使用正确的大小写来删除它作为您遇到的错误的潜在候选者?使用 rdr("startdate") 时抛出的确切错误消息是什么? 是的,尝试切换大小写..这是确切的错误.. “字符串未被识别为有效的日期时间。”【参考方案3】:我也有这个问题。从我读过的内容来看,似乎不兼容的字符编码可能已应用于日期。我能够通过使用这样的东西来解决这个问题:
SELECT DATE(StartDate) AS StartDate, ... FROM AppointmentsMain
我知道这是一个老问题,但我在任何地方都找不到解决方案...
【讨论】:
这只是一个临时解决方案,最好首先确保正确存储日期。请记住 SQLite 将它们存储为字符串。以上是关于SQLite 和 .net 字符串未被识别为有效的 DateTime的主要内容,如果未能解决你的问题,请参考以下文章
字符串“04/28/2021 04:25p”未被识别为有效的日期时间