sql >> Databáze >  >> RDS >> Sqlserver

Konverze C# datetime na SQL server datetime vyvolá chybu

Váš kód – jak je nyní – přenese jakoukoli hodnotu na úrovni řetězce . Toto je opravdu špatný přístup . Probíhající implicitní převody do značné míry závisí na nastavení vašeho systému (jazyk a kultura). Nejhorší na tom je:Na vašem počítači to může fungovat skvěle, když jej testujete, ale v systému zákazníka se to rozbije s podivnými zprávami. Šťastné ladění :-(

Změňte svůj kód takto

foreach (PropertyInfo prop in props) {
    // Setting column names as Property names.
    if (prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
        dataTable.Columns.Add(prop.Name, prop.PropertyType.GetGenericArguments()[0]);
    else
        dataTable.Columns.Add(prop.Name, prop.PropertyType);
}

Tím přidáte sloupec – i když se jedná o typ s možnou hodnotou Null – se správným datovým typem.

kredity: Tato odpověď mi pomohla

AKTUALIZACE Ještě jednodušší

(díky Yvesi M. v komentáři pod odkazovanou odpovědí)

foreach (PropertyInfo prop in props) {
    // Setting column names as Property names.
        dataTable.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
}


  1. Aktualizace pomocí vlastního připojení

  2. Odstávka a režim použití Hotpatch v adop R12.2

  3. Jak získat sobotní datum (nebo jiné datum v týdnu) - SQL Server

  4. Dlouhá doba načítání dat z OracleDB pomocí Eclipselink