sql >> Database >  >> RDS >> Sqlserver

Conversie van C# datetime naar sql server datetime geeft een fout

Uw code - zoals deze nu is - zal elke waarde op tekenreeksniveau overdragen . Dit is een heel slechte benadering . De impliciete conversies die plaatsvinden zijn sterk afhankelijk van de instellingen van uw systeem (taal en cultuur). Het ergste is:dit zou allemaal geweldig kunnen werken op uw machine terwijl u het test, maar op het systeem van een klant breekt het met vreemde berichten. Veel plezier met debuggen :-(

Verander je code als volgt

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);
}

Dit zal de kolom toevoegen - zelfs als dit een nullable type is - met het juiste datatype.

tegoeden: Dit antwoord heeft me geholpen

UPDATE Nog eenvoudiger

(thx aan Yves M. in een reactie onder het gelinkte antwoord)

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


  1. update in mysql_query geeft soms null terug

  2. SQL-tijdsverschil tussen twee datums resulteert in uu:mm:ss

  3. Dichtbij locatie zoeken op Google Maps, PHP &MySQL

  4. mysql en php PDO - wat gebeurt er met een niet-gecommitteerde transactie als de verbinding onverwachts wordt verbroken?