c# - 从 SQLite 数据库 C# WPF 中提取 DateTime 的问题

标签 c# wpf sqlite datetime

我有一个非常可怕的错误...

我有两个窄等于类,用于从 sqlite 数据库中提取数据

我在两个 SQLite 数据库中将日期保存为 DATETIME。
我的第一个,包含这个加载数据的方法

private void LoadData()
        {
            SetConnection();
            sql_con.Open();
            sql_cmd = sql_con.CreateCommand();
            string CommandText = "select ID,Name,Solde,Last_Update from Comptes";
            sql_cmd.CommandText = CommandText;
            SQLiteDataReader reader = sql_cmd.ExecuteReader();
            while (reader.Read())
            {
                Compte compte = new Compte();
                compte.ID = reader.GetInt16(reader.GetOrdinal("ID"));
                compte.Nom = reader.GetString(reader.GetOrdinal("Name"));
                compte.Solde = reader.GetDouble(reader.GetOrdinal("Solde"));
                string to = reader.GetString(reader.GetOrdinal("Last_Update"));
                DateTime dt=DateTime.ParseExact(reader.GetString(reader.GetOrdinal("Last_Update")),"yyyy-MM-dd hh:mm:ss",CultureInfo.InvariantCulture);
                compte.Last_Update = dt;
                this.Comptes.Add(compte);

            }
            sql_con.Close();
        }

第二个:
private void ExecuteQuery(string txtQuery)
        {
            SetConnection();
            sql_con.Open();
            sql_cmd = sql_con.CreateCommand();
            sql_cmd.CommandText = txtQuery;
            sql_cmd.ExecuteNonQuery();
            sql_con.Close();
        }

        private void LoadData()
        {
            SetConnection();
            sql_con.Open();
            sql_cmd = sql_con.CreateCommand();
            string CommandText = "SELECT ID,Montant,ID_Emetteur,ID_Recepteur,Description,Date FROM Mouvements";
            sql_cmd.CommandText = CommandText;
            SQLiteDataReader reader = sql_cmd.ExecuteReader();
            while (reader.Read())
            {
                Mouvement mouvement = new Mouvement();
                mouvement.ID = reader.GetInt16(reader.GetOrdinal("ID"));
                mouvement.Montant=reader.GetDouble(reader.GetOrdinal("Montant"));
                mouvement.ID_Emetteur=reader.GetInt32(reader.GetOrdinal("ID_Emetteur"));
                mouvement.ID_Recepteur=reader.GetInt32(reader.GetOrdinal("ID_Recepteur"));
                mouvement.Description=reader.GetString(reader.GetOrdinal("Description"));
                String out_date = reader.GetString(reader.GetOrdinal("Date"));
                try
                {
                    DateTime dt = DateTime.ParseExact(out_date, "yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture);
                }
                catch (Exception ex) { }
                this.Mouvements.Add(mouvement);

            }
            sql_con.Close();
        }

第一种方法有效,但第二种方法在 try catch 附近给了我一个异常。
格式完全相同。

A Debugger Capture here

希望有人能帮助我!

最佳答案

如果要使用 24 小时制,则需要在格式字符串中使用 HH。 hh 是 12 小时时间,并且提供的时间 > 12,因此会引发异常。这将起作用。

DateTime dt = DateTime.ParseExact(out_date, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

关于c# - 从 SQLite 数据库 C# WPF 中提取 DateTime 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615301/

相关文章:

c# - 在 C# 中使用 TreeView 创 build 置表单

c# - 为什么我的 View 模型的这个默认 DataTemplate 没有被拾取?

Android 使用 contentresolver.bulkInsert() : too slow 在 "content://sms/"中插入多条短信

tsql - SQLite : 中的空替换

wpf - 与 ThemeResourceKey 关联的颜色

android - 在 SQLite 中高效地存储和查询整数数组

c# - 在没有 WS-Management 服务的情况下通过 MI 访问 WMI 实例

C#:你能检测出当前执行上下文是否在 `lock (this)` 内吗?

c# - 从列表中选择在成员函数上返回 true 的所有对象作为列表?

wpf - MVVM Linq2Sql 和 DataContext