Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Việc chuyển đổi datetime của C # thành datetime của máy chủ sql đang gặp lỗi

Mã của bạn - như hiện tại - sẽ chuyển bất kỳ giá trị nào ở cấp chuỗi . Đây là một cách tiếp cận thực sự tồi tệ . Các chuyển đổi ngầm diễn ra phụ thuộc nhiều vào cài đặt hệ thống của bạn (ngôn ngữ và văn hóa). Phần tồi tệ nhất là:Điều này có thể hoạt động tốt trên máy của bạn khi bạn đang kiểm tra nó, nhưng trên hệ thống của khách hàng, nó bị hỏng với các thông báo lạ. Gỡ lỗi vui vẻ :-(

Thay đổi mã của bạn như thế này

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

Thao tác này sẽ thêm cột - ngay cả khi đây là kiểu nullable - với kiểu dữ liệu chính xác.

tín dụng: Câu trả lời này đã giúp tôi

CẬP NHẬT Thậm chí còn đơn giản hơn

(Thx cho Yves M. trong một bình luận bên dưới câu trả lời được liên kết)

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. Sử dụng crypt_gen_random để tạo Số sê-ri duy nhất

  2. SQL để xác định số ngày truy cập tuần tự tối thiểu?

  3. Làm cách nào để tách một chuỗi để tôi có thể truy cập mục x?

  4. SQL - Truy vấn để lấy địa chỉ IP của máy chủ

  5. Cột hình ảnh BLOB của SQL Server - giải nén bằng truy vấn BCP - tệp bị hỏng VÀ lỗi