sql >> Database teknologi >  >> RDS >> Sqlserver

Konvertering af C# datetime til sql server datetime giver en fejl

Din kode - som den er nu - vil overføre enhver værdi på strengniveau . Dette er en rigtig dårlig tilgang . De implicitte konverteringer, der finder sted, afhænger i høj grad af dit systems indstillinger (sprog og kultur). Det værste er:Dette fungerer måske helt fantastisk på din maskine, mens du tester det, men på en kundes system bryder det med mærkelige beskeder. God fejlfinding :-(

Skift din kode på denne måde

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

Dette vil tilføje kolonnen - selvom dette er en nullbar type - med den korrekte datatype.

kreditter: Dette svar hjalp mig

OPDATERING Endnu enklere

(thx til Yves M. i en kommentar under det linkede svar)

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


  1. MySQL-opdatering CASE HVORNÅR/SÅ/ANDEN

  2. Kan ikke vælge nogle rækker med npgsql på en portugisisk database

  3. Hent flere poster fra xml-kolonnen med værdi() i SQL Server

  4. hvilken jdbc jar skal man bruge med oracle 11g &jdk 1.6 og hvordan man forbinder til selve db'en