Trong C#, sử dụng SqlDataReader, có cách nào để đọc một giá trị boolean từ DB không?Đọc các giá trị boolean từ DB?
while (reader.Read())
{
destPath = reader["destination_path"].ToString();
destFile = reader["destination_file"].ToString();
createDir = reader["create_directory"].ToString();
deleteExisting = Convert.ToBoolean(reader["delete_existing"]);
skipIFolderDate = reader["skipifolderdate"].ToString();
useTempFile = reader["useTempFile"].ToString();
password = reader["password"].ToString();
}
Trong mã ở trên, delete_existing luôn là 1 hoặc 0 trong DB. Tôi đọc trên MSDN rằng Convert.ToBoolean() không chấp nhận 1 hoặc 0 là đầu vào hợp lệ. Nó chỉ chấp nhận đúng hoặc sai. Có cách nào khác để chuyển đổi một giá trị DB thành một bool không? Hoặc tôi cần phải làm điều này bên ngoài của SqlDataReader?
Ngoài ra, tôi không thể thay đổi giá trị DB, vì vậy vui lòng không trả lời, "Thay đổi giá trị DB từ 1 và 0 thành giá trị true và false."
Cảm ơn!
@Laurent Hmm ...Tôi thà đi với lựa chọn thứ ba bởi vì ai đó có thể thêm một cột vào bảng và sau đó, rõ ràng, ứng dụng sẽ phá vỡ. Tuy nhiên, bạn có thể giải thích chính xác những gì đang xảy ra trong tùy chọn thứ hai không? Tôi bối rối bởi "như bool? ?? false;" cụ thể là 3? '... –
Giải pháp thứ 3: Tôi đang cố gắng đọc trình đọc ["delete_existing"] thành một bool null (bool?). Bằng cách này, diễn viên thất bại và trả về null nếu trường có chứa DBNull.Value. Bởi vì tôi thích để có được sai thay vào đó, tôi đang sử dụng ?? mà biến đổi một giá trị null thành bất kỳ giá trị nào (ví dụ: null? 45 = 45). Tôi sử dụng rất nhiều. – Larry
Giải pháp thứ hai: Tôi đang thực hiện dàn diễn viên trực tiếp với một bool. Điều này sẽ ném một ngoại lệ nếu giá trị không phải là một loại boolean. Ví dụ, nếu nó là DBNull.Value. Đó là lý do tại sao nó nên được sử dụng với trường không phải là cơ sở dữ liệu bit null. Chỉ cần chọn một trong những phù hợp với nhu cầu của bạn^^ Loại cơ sở dữ liệu của delete_existing btw là gì? – Larry