Tôi đang đọc kết quả từ Cơ sở dữ liệu MS SQL 2008 với một kiểu cột của dbtype.time từ một bộ dữ liệu, sử dụng C# với khung công tác DAAB 4.0.Làm thế nào để chuyển đổi Datareader Kết quả của DbType.Time để Timespan Object?
Vấn đề của tôi là tài liệu MSDN nói dbtype.time nên ánh xạ tới một khoảng thời gian nhưng chỉ có hàm khởi tạo gần cho thời gian tôi thấy chấp nhận một thời gian dài và kết quả được trả về từ trình quản lý dữ liệu không thể truyền sang thời gian dài. timespan.
Tôi tìm thấy điều này Article whichs hiển thị phương thức datareader.getTimeSpan(), nhưng trình quản lý dữ liệu trong daab 4.0 dường như không có phương pháp này.
Vậy làm cách nào để chuyển đổi kết quả từ bộ dữ liệu sang đối tượng timepan?
Cả giải pháp của bạn và Ken đều tốt. Tuy nhiên, nếu giá trị là null, thông báo ngoại lệ của giải pháp của Ken là mô tả hơn. 'SqlNullValueException - Dữ liệu là Null. Không thể gọi phương thức hoặc thuộc tính này trên các giá trị Null' VS 'InvalidCastException - Truyền được chỉ định không hợp lệ'. – TheWanderingMind
Để trả lời BishopBarber bình luận nếu cột có thể được nullable bạn nên chuyển đổi nó để TimeSpan? nullable loại và kiểm tra null. 'TimeSpan? span = reader ["tsfield"] == DBNull.Value? (TimeSpan?) Null: (TimeSpan?) Đọc ["tsfield"] ' –
Tôi thấy giải pháp này tốt hơn vì tôi thường không truy cập trình đọc dữ liệu của mình theo chỉ mục. Tuy nhiên tôi có một phương pháp trung gian để kiểm tra null. – MichaelChan