2009-03-09 42 views
8

Rõ ràng (MSDN) đôi khi OleDbConnection.ResetState() không làm gì cả, vì vậy ngay cả khi kết nối không thành công OleDbConnection.State vẫn sẽ được đặt thành Mở. Tôi đang tìm cách giải quyết tốt nhất cho điều này, vì vậy khi tôi kiểm tra trạng thái kết nối, tôi có thể tránh tăng các ngoại lệ (miễn là kết nối không thành công giữa lần kiểm tra cuối cùng và nỗ lực sử dụng).Cách tốt nhất để kiểm tra trạng thái OleDbConnection

Không có gì tốt hơn là gửi câu lệnh sql "vô dụng" mỗi lần chỉ để xem có ngoại lệ không? Làm thế nào để bạn chắc chắn rằng kết nối của bạn được mở trước khi bạn thực sự sử dụng nó?

+0

Đó thực sự là một câu hỏi hay. –

+0

@Robert - Nó thực sự là! –

Trả lời

5

Trong trường hợp của bạn tôi sẽ làm như sau:

  1. Đừng bận tâm là chắc chắn nếu kết nối là "thực sự" mở trước khi sử dụng nó: nó sẽ được hầu hết thời gian anyways, và bạn sẽ dành nhiều vòng tròn vô dụng cho máy chủ
  2. NHƯNG kiểm tra ngoại lệ mỗi lần bạn sử dụng kết nối (tạo phương pháp trợ giúp để tránh sao chép/dán tại đây)
  3. Nếu bạn có ngoại lệ, hãy gửi câu lệnh "vô dụng" để kiểm tra trạng thái "thực" của cơ sở dữ liệu. Tôi sẽ làm điều đó vì loại ngoại lệ bạn có thể nhận được khi kết nối với máy chủ bị mất đôi khi có thể khá ngạc nhiên (tùy thuộc vào những gì đang xảy ra tại thời điểm kết nối bị hỏng)

Hy vọng điều này sẽ hữu ích.