Tôi nghĩ rằng vấn đề của bạn được đặt ra do việc sử dụng một enum không hợp lệ trong các lệnh gọi Phương thức Thêm của bạn
Nếu bạn chạy mã này, bạn có thể nhận thấy rằng OracleType đối với Int32 không giống với SqlDbType
OracleType e = OracleType.Int32;
int i = (int)e;
Console.WriteLine(i.ToString()); // Output = 28
SqlDbType z = SqlDbType.Int;
i = (int)z;
Console.WriteLine(i.ToString()); // Output = 8
Vì vậy, tôi khuyên bạn nên sử dụng enum chính xác cho nhà cung cấp ADO.NET của bạn.
Điều thú vị cần lưu ý là gọi Add bằng SqlDbType
thay vì OracleType
được chấp nhận và không gây ra lỗi thời gian biên dịch. Điều này xảy ra vì phương thức Add có quá tải chấp nhận một đối tượng làm tham số thứ hai (Nó được sử dụng để truyền trực tiếp một giá trị khi xây dựng tham số).
Một giải pháp thay thế là sử dụng AddWithValue
của OracleParameterCollection
command.Parameters.AddWithValue("@course_Id", course_Id);
command.Parameters.AddWithValue("@question", question);
command.Parameters.AddWithValue("@posterName", posterName);
command.Parameters.AddWithValue("@blogdate", blog_date);