2011-10-25 38 views
5

Tôi có hai cơ sở dữ liệu cục bộ mà tôi đang cố kết nối với việc sử dụng lớp Kết nối của Java. Thật dễ dàng để kết nối với cơ sở dữ liệu đầu tiên bằng cách sử dụng:Tham chiếu hai cơ sở dữ liệu với Kết nối trong java

public Connection conn; 
conn = DriverManager.getConnection(connectionString); 

Làm cách nào để thêm cơ sở dữ liệu thứ hai vào cùng một kết nối? Cả hai đều trên cùng một máy chủ vì vậy nó nên được khá đơn giản nhưng tôi không thể tìm thấy các lệnh phải làm điều đó.

Cảm ơn

+0

tại sao bạn muốn kết nối hai cơ sở dữ liệu từ cùng một kết nối? sao chép? –

+0

Vì vậy mà tôi có thể chạy các giao dịch truy vấn cả hai cơ sở dữ liệu –

+0

nói nếu bạn có table1 trong db1 và table2 trong db2, vì vậy bạn cần phải chạy truy vấn tham gia table1 và table2? –

Trả lời

9

Kết nối là phiên có cơ sở dữ liệu cụ thể. Bạn không thể sử dụng một kết nối để giao tiếp với hai cơ sở dữ liệu khác nhau; cho điều đó, bạn cần hai kết nối riêng biệt.

Connection conn1 = DriverManager.getConnection(connectionString1); 
Connection conn2 = DriverManager.getConnection(connectionString2); 
+0

Đó là cách giải quyết mà tôi đang sử dụng nhưng tôi hy vọng sẽ có cách tốt hơn để làm điều đó –

2

Các bạn đã thử:

public Connection conn1; 
conn1 = DriverManager.getConnection(connectionString1); 
public Connection conn2; 
conn2 = DriverManager.getConnection(connectionString2); 
+0

Đó là công việc xung quanh, tôi đã hy vọng cho một cái gì đó tốt hơn –

1
  1. thành viên Instance không nên được công khai.

  2. Kết nối phải là biến cục bộ chứ không phải là thành viên của cá thể.

Bạn chỉ có thể kết nối với một cơ sở dữ liệu tại một thời điểm với một kết nối duy nhất. Ergo bạn cần một kết nối khác.

+0

Cảm ơn, nhưng tôi đã làm theo 1 và 2 trong mã của tôi, tôi chỉ đơn giản hóa nó cho ví dụ ở đây. –

+0

@Zain Tôi không thấy cách đơn giản hoá mọi thứ. Trên thực tế nó chỉ lãng phí thời gian của bạn và của tôi. – EJP

0

Tôi nghĩ bạn phải sử dụng J2EE, trình quản lý giao dịch JTA để thực hiện việc này.

+0

Bạn không. Downvote. – EJP

+0

Sử dụng 2 kết nối không phải là giao dịch rất an toàn. Với trình quản lý giao dịch JTA, bạn có thể đạt được chức năng này một cách minh bạch, http: //stackoverflow.com/questions/1961566/how-to-configure-transaction-management-for-working-with-2-different-db-in -sprin –

+0

Tôi đã nghĩ rằng việc sử dụng hai kết nối không phải là giao dịch an toàn chút nào, nhưng tuyên bố đó không giống như 'bạn phải sử dụng'. OP đã không nói gì về an toàn giao dịch trên các cơ sở dữ liệu là một yêu cầu, cũng không phải là về trong một môi trường J2EE, nơi JTA thậm chí có sẵn. – EJP

Các vấn đề liên quan