Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

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!

12 Responses to “Kết nối java với Oracle”

  1. 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.

  2. 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?

  3. 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

  4. 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.

  5. 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. 😀

  6. hic said

    Do not understand

  7. 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.

  8. 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.

  9. 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

  10. 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

  11. 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,..

  12. 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)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: