【问题标题】:How to read in SqlLite field which has the date Format?如何读取具有日期格式的 Sqlite 字段?
【发布时间】:2020-11-24 18:59:08
【问题描述】:

如何从 SqlLite Db 中读取 DateTime 字段?我收到以下错误:

System.FormatException: 'String '01.06.2001 00:00' was not recognized as a valid DateTime.'

我使用的方法如下。我可以在调试模式下看到正在读入其他字段,但一旦涉及到 DateTime 字段,它就会失败。

public static SingleTable QueryDbTable(string sqlSelect)
    {
        var result = new SingleTable();
        var fileUrl = @"URI=file:C:Url\Database\DB.db";

        using var con = new SQLiteConnection(fileUrl); con.Open();
        using var cmd = new SQLiteCommand(sqlSelect, con);
        using SQLiteDataReader dr = cmd.ExecuteReader();

        var cols = dr.FieldCount;

        while (dr.Read())
        {
            var singleRow = new SingleRow();

            for (var i = 6; i < cols; i++)
            {
                if (!dr.IsDBNull(i))
                {
                    singleRow.Col.Add(dr.GetValue(i).ToString());
                    continue;
                }

                singleRow.Col.Add("");
            }

            result.Table.Add(singleRow);
        }

        return result;
    }

链接的类:

public class SingleTable
{
    public List<SingleRow> Table { get; set; } = new List<SingleRow>();
}

public class SingleRow
{
    public List<string> Col { get; set; } = new List<string>();
}

目标只是将系统中的字段作为表格读取。

我也尝试过以各种方式将其保存到变量中(大多数是愚蠢的尝试),但它给出了相同的错误。

var item = dr.GetDateTime(i);

虽然这些是基础知识,但我找不到它可以解释如何读取数据,但如何选择或仅插入。

任何建议,如何将 DateTime 元素存储在变量中?

【问题讨论】:

标签: c# sqlite datetime


【解决方案1】:

好吧,所以我仍然不知道为什么,但解决方法是这样做,基本上,手动解析,而对于读者的任何东西都不起作用,无法直接解析 dr.GetString(i) 或类似的东西。

   try
        {
            validFrom = (DateTime) dr["ValidFrom"];
        }
        catch (Exception e)
        {
            var i = dr.GetOrdinal("ValidFrom");
            var stringValidFrom = dr.GetString(i);
            var parsedSuccesfully = DateTime.TryParse(stringValidFrom, out var value);
            validFrom = value;
        }

也许有人会知道原因,但这就是我最终得到结果的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2019-04-01
    • 2011-01-10
    • 1970-01-01
    • 2011-11-12
    相关资源
    最近更新 更多