c# sqlite reader Date(sql) -> string(c#) ERROR

0

Witam, próbuję odczytać z sqlite wiersz w której znajduję się pole typu Data. Chciałbym tą date przekonwertować do Stringa i wyświetlić w ListBox'ie.
W chwili wykonywania kodu (troche jest zakomentowane) pojawia się error: "string was not recognized as a valid datetime c#" . Linijki zakomentowane to różne próby parsowania.
Korzystałem z stack'a. Czy ktoś ma jakieś pomysły jak sb z tym poradzić? screen z bazy danych: https://scr.hu/2pdc/wg7hv
Proszę o pomoc, dziękuję za każdy post ! Skrajnie można w bazie danej zamiast Date dawać varchar aby operować na stringu ale jest to nieeleganckie.

     string Query = "select *  from statystyki Order by Czas  limit 10; ";
                SQLiteCommand comand = new SQLiteCommand(Query, m_dbConnection);
                comand.ExecuteNonQuery();
                SQLiteDataReader dr = comand.ExecuteReader();

                string idd, czas, WPR, data1;
                int licznik = 0;
                while (dr.Read())
                {
                    idd = dr.GetValue(licznik).ToString(); licznik++;
                    czas = dr.GetValue(licznik).ToString(); licznik++;

                    //DateTime datowa =  DateTime.ParseExact(dr.GetValue(licznik), "ddd MMM dd HH:mm:ss KKKK yyyy", CultureInfo.InvariantCulture)
                    //data1 = Convert.ToDateTime(dr.GetValue(licznik)).ToString("dd/MM/yyyy");
                    //DateTime data = (DateTime)(dr.GetValue(licznik));
                    //data1 = data.ToString("dd/MM/yyyy");
                    //DateTime data = DateTime.ParseExact(datowa, "ddd MMM dd HH:mm:ss zzzz yyyy", CultureInfo.InvariantCulture);
                    //string result = dr.GetValue(licznik).ToString("dd/mm/yyyy", CultureInfo.InvariantCulture);


                    licznik++;  WPR = dr.GetValue(licznik).ToString(); licznik++;
                    licznik = 0;
                    
                    listBoxNr.Items.Add(idd);
                    listBoxCzas.Items.Add(czas);
                    listBoxData.Items.Add(data1);
                    listBoxWPR.Items.Add(WPR);
1

Spróbuj coś takiego:

 DateTime data = (DateTime)dr["Data"]; 

I sprawdź jeszcze to :
https://www.devart.com/dotconnect/sqlite/docs/Devart.Data.SQLite~Devart.Data.SQLite.SQLiteDataReader~GetDateTime(Int32).html

1

Tak przy okazji, używanie daty w postaci stringu, czy nawet typu DATETIME jest wysoce nieoptymalne. Zwłaszcza, jeśli się robi jakieś operacje na tej dacie. W dodatku to jest prosta droga do problemów z konwersją. Powinno się używać inta reprezentującego datę. A dla człowieka przeglądającego bazę, można zrobić widok, który będzie miał kolumnę z reprezentacją tej daty w sposób czytelny dla człowieka.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.