Kết nối java với Oracle
Trong bài này tôi sẽ hướng dẫn các bạn cách kết nối tới Oracle Server từ java.
Dĩ nhiên là bạn phải có 1 account của Oracle DB server. Với tôi, tôi download OracleDatabaseServerXE, một phiên bản express miễn phí của Oracle. Trên đó bạn có 1 database có tên XE và 1 schema có tên HR với các bảng quản lý nhân sự. Bạn có thể tạo thêm schema nếu bạn muốn.
Link download: http://www.oracle.com/technology/software/products/database/xe/htdocs/102xewinsoft.html. Tất nhiên bạn phải có 1 account của oracle(đăng ký miễn phí).
Sau khi download xong, cài đặt theo hướng dẫn và mở phần hướng dẫn lên. Bạn phải active user hr lên nhé. user/psw mặc định của hệ thống là system/oracle.
Bây giờ bạn đi đến thư mục cài đặt, thường là đĩa c, C:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\, bạn sẽ có 2 file driver có tên ojdbc14.jar và ojdbc14_g.jar. Driver ojdbc14_g.jar giống nh7 driver kia, chỉ khác là khi build người ta thêm tham số -g vào cho mục đích debug.
Trong Eclipse, bạn tạo 1 project. Nếu là Java Project thì bạn cần có 1 trong 2 file jar kia được tham chiếu. Nếu là Web Project thì bạn cần có nó trong thư mục WEB-INF\lib của project.
Bạn có 2 dạng driver là THIN driver và OCI driver. THIN driver được sử dụng như 1 driver độc lập trong khi OCI bạn sử dụng với Oracle Client được cài ở máy client.
Code kết nối của nó như sau:
//với con là biến mức lớp được khai báo như sau:
//private static Connection con=null;
static Connection createOracleThinConnection(String schema,
String username,String psw) throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@hbm/"+schema;
con=DriverManager.getConnection(url,username,psw);
return con;
}
static Connection createOracleOCIConnection(String schema,
String username,String psw) throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:oci:@hbm/"+schema;
con=DriverManager.getConnection(url,username,psw);
return con;
}
Ở đây @hbm là tên máy chủ OracleDB Server.
Ngoài ra bạn có thể dùng OracleDataSource để lookup database như sau:
public static Connection createOracleDSConnection
(String databaseName)throws Exception{
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@localhost:1521/XE");
con = ods.getConnection("hr","oracle");
return con;
}
ở đây dùng user hr và mật khẩu oracle.
OK. Bây giờ bạn đã có connection, bạn có thể thực thi truy vần được rồi!
Chúc thành công!
LamHa said
Trước em đọc bài viết này thì đỡ khổ rồi. Tuy đơn giản nhưng có ích lắm. Cảm ơn về những tut của thầy.
Huynh Phuong Dong said
Thầy cho em hỏi!!
Khi em muốn xây dựng một ứng dụng bằng java truy xuất dữ liệu XML trong Oracle DB thì em nên làm thế nào?Thầy có thể cho em xin vài tài liệu có liên quan được không?
trần thị kim ngọc said
Thầy cho em hỏi là: em dùng csdl oracle , em truy vấn insert được rùi, mà lúc em truy vấn select * from activities thì ra kết quả. mà em truy xuất select * from activities where activitiesID=’FA001′ thì bị lỗi này
ORA-00904: “ACTIVITIESID”: invalid identifier
00904. 00000 – “%s: invalid identifier”
*Cause:
*Action:
Error at Line: 1 Column: 31
mà em đã insert vào dòng với activitiesID là FA001 rùi với activitiesID kểu varchar2.
Em đang làm đề tài có kết nối oracle vào netbeans, em kết nối được rùi, insert cũng được mà em update, delete bị lõi.Thầy coi dùm lỗi cho em với
Võ Văn Hải said
Em có chắc trong bảng activities có field có tên ACTIVITIESID? Hoặc nếu như có, em thay bằng [ACTIVITIESID] thử xem.
number_one said
thank thầy. Em chi bit kết nối từ SQL đến java (hok ở trường) bây giờ đang hok oracle (hok ngoài) và mới hok java. Nên em đok cũng ko hiu? mấy nhưng cũng cảm ơn thầy. chắc có ích về sau.
hic said
Do not understand
tanloc said
thầy ơi!!! em kết nối được oracle mà không show được database nhưng khi kết nối với JAVA DB thì show được. code của em chạy rất ốt. em cảm ơn thầy nhiều.
Võ Văn Hải said
Kiểm tra Driver, kiểm tra kết nối thử với Oracle trước khi kết luận.
Android said
Thầy có thể giải thích giúp e kỹ hơn được ko? vì e hiện tại mới học cái này. Thầy viết 1 example kết nối cơ sơ dữ liệu oracle với java webservice, có truy vấn và trả về dữ liệu (có thể insert or update)…thanks thầy nhiều
Try conneciton said
Thầy cho em hỏi: em kết nối tới database oracle của server , nhưng nếu server mất mạng thì em muốn chương trình của em tự động kết nối lại database khi server có mạng trở lại
Võ Văn Hải said
“Thầy cho em hỏi: em kết nối tới database oracle của server , nhưng nếu server mất mạng thì em muốn chương trình của em tự động kết nối lại database khi server có mạng trở lại”
Thay vì bạn dùng ResultSet (dựa trên 1 kết nối) thì bạn hãy dùng disconect result set, chẳng hạn như CachedRowSet, XMLRowSet,..
Smile said
Thầy cho em hỏi: Hiện tại e đang làm đề tài xây dựng ứng dụng Web với Java và Oracle. Vậy e cần cài đặt và nghiên cứu những gì ạ? (em mới bắt đầu tự học Oracle)