"TIMESTAMP" 类型的列中的空字符串导致不可读

An empty string in a column of type "TIMESTAMP", caused unreadable

这是第三方数据库文件,所以我无法更改它的架构。

我正在使用 System.Data.SQLite.SQLiteDataAdapter.Fill 方法获取目标 table 中的全部数据。

但是当它读到一个数据行时会抛出一个FormatException:"String was not recognized as a valid DateTime".

我检查了这个 table 并发现该行在类型为 "TIMESTAMP" 的列下存储了一个空字符串。

我尝试将此单元格更改为普通数据或 null 并且不会再次抛出异常,因此我确认此问题是由此空字符串引起的。

我在任何地方都没有找到有效的解决方案,所以我问了这个问题。 有人解决过这个问题吗?

经过SQLite.NET开发团队的确认,他们认为这是WAD(Works As Designed)。

所以我只能在读数据库的时候用其他方式处理这个可能出现的问题

//...
using (var comm = new SQLiteCommand($"SELECT * FROM {tableName}", conn))
{
    using (var reader = comm.ExecuteReader())
    {
        var dt = d.Tables[tableName];
        while (reader.Read())
        {
            var r = dt.NewRow();
            for (var i = 0; i < dt.Columns.Count; i++)
                try
                {
                    var val = reader.GetValue(i);
                    r[i] = val;
                }
                catch (FormatException)
                {
                    if (dt.Columns[i].DataType == typeof(DateTime))
                        r[i] = DateTime.MinValue;
                    else
                        throw;
                }
            dt.Rows.Add(r);
        }
    }
}

(PS: 我仍然认为这是一个错误,因为 Fill 方法在填充 table)

时不应抛出此异常