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.NETVS 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”未被识别为有效的日期时间

DatePicker 绑定到 DateTime。 “字符串未被识别为有效的日期时间”

c# datetime.parseexact 字符串未被识别为有效的日期时间 [重复]