Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Konversi datetime C # ke sql server datetime menimbulkan kesalahan

Kode Anda - seperti sekarang - akan mentransfer nilai apa pun pada level string . Ini adalah pendekatan yang sangat buruk . Konversi implisit yang terjadi sangat bergantung pada pengaturan sistem Anda (bahasa dan budaya). Bagian terburuknya adalah:Ini mungkin bekerja dengan sangat baik di mesin Anda saat Anda mengujinya, tetapi pada sistem pelanggan itu rusak dengan pesan aneh. Selamat Debug :-(

Ubah kode Anda seperti ini

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

Ini akan menambahkan kolom - meskipun ini adalah tipe nullable - dengan tipe data yang benar.

kredit: Jawaban ini membantu saya

PERBARUI Lebih sederhana

(terima kasih kepada Yves M. dalam komentar di bawah jawaban yang ditautkan)

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mungkin untuk mengembalikan baris kosong dari Sql Server?

  2. Apa yang Baru di SQL Server 2019?

  3. Format string inisialisasi tidak sesuai dengan spesifikasi mulai dari indeks 0

  4. Permintaan sql DateTime sederhana

  5. Pesan teks melalui SQL Server