Như được mô tả trong MySQL tài liệu
bạn cần sử dụng Connection.setCatalog()
để chuyển sang cơ sở dữ liệu khác. Nó cũng nói rõ ràng rằng bạn không nên thực thi một USE <databasename>
để chuyển đổi.
Lý do cho cảnh báo này là JDBC là một giao diện chung cho cơ sở dữ liệu và do đó cung cấp các phương pháp cho hầu hết các tác vụ phổ biến, bao gồm cả chuyển đổi catalogs
(hoặc databases
như chúng trong MySQL). Đặc tả JDBC / javadoc cũng nói rõ ràng rằng mọi người nên sử dụng API thay vì các lệnh cụ thể của cơ sở dữ liệu (nếu cả hai đều có sẵn). Có một số lý do cho điều này:1) nó thúc đẩy mã độc lập với cơ sở dữ liệu và 2) trình điều khiển có thể thực hiện những việc bổ sung trong nội bộ để đáp ứng với một trong các phương thức API. Việc sử dụng các lệnh dành riêng cho cơ sở dữ liệu có thể khiến trình điều khiển hoạt động sai vì trạng thái bên trong của nó không khớp với trạng thái cơ sở dữ liệu.
Lệnh gọi tới setCatalog(String)
sẽ không ảnh hưởng đến các câu lệnh hiện có, như được chỉ định trong tài liệu JDBC API: