Tôi đang cố gắng thêm một cột vào một hiện tại DataRow
trong C#. Sau đó, cột sẽ được lấp đầy với một giá trị duy nhất từ cơ sở dữ liệu của tôi.ExecuteScalar trả về null hoặc DBNull (máy chủ phát triển hoặc sản xuất)
DataRow dr đã tồn tại và cột "COLNAME" cũng tồn tại.
comTBP là số SqlCommand
của tôi.
dr["COLNAME"] = Convert.ToInt32(comTBP.ExecuteScalar());
Tất cả đều hoạt động tốt nếu có giá trị trong cơ sở dữ liệu và ExecuteScalar() có thể nhận được giá trị đó. Nếu tôi kiểm tra mã này trên máy chủ phát triển của tôi (local) nó cũng hoạt động nếu ExecuteScalar() trả về null hoặc DBNull và giá trị của cột mới của tôi là 0. Nhưng vấn đề xuất hiện nếu tôi triển khai mã của tôi đến máy chủ sản xuất. Nếu tôi làm tất cả mọi thứ như nhau, với cùng một cơ sở dữ liệu nó ném một ngoại lệ với một thông điệp rằng nó không thể chuyển đổi DBNull để Int32.
Câu hỏi của tôi là tại sao lỗi này xuất hiện trên máy chủ sản xuất chứ không phải trên máy chủ phát triển cục bộ của tôi?
dữ liệu có khả năng khác nhau Hầu hết về sản xuất và phát triển. – leppie