Java ilə Oracle bazasına qoşulmaq

Posted on 24 Yanvar 2010. Filed under: Java, JDBC, Oracle | Etiketlər: , , , |


Bu yazıda Oracle bazasına qoşulan nümunə bir proqramın yazılmasına baxacıq.

İstifadə etdiyimiz proqram təminatı bunlardır:

1.Netbeans 6.7 + Java SDK 1.6
2.Oracle Express Edition universal

Proqram aşağıdakı hissələrdən ibarətdir:

1.Oracle bazasına qoşulmaq
2.Məlumat oxumaq

Java ilə verilənlər bazasına qoşulmaq üçün JDBC (Java Database Connectivity) texnologiyası istifadə olunur. Əvvəlcə qoşulmaq istədiyimiz verilənlər bazasına uyğun olan JDBC drayveri əldə etmək lazımdır. Oracle JDBC drayverini aşağıdakı saytdan yükləmək olar.
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
JDBC Driver Downloads siyahısından Oracle bazasının müxtəlif versiyalarına uyğun drayverlər verilmişdir, ən yeni olan Oracle Database 11g Release 2 (11.2.0.1.0) üçün drayveri yükləyək, çünki əvvəlki bütün versiyalar ilə uyğundur. 2-ci səhifədə yuxarıda “Accept License Agreement” seçib lisenziya razılaşmasını qəbul edin və siyahıda 1-ci olan ojdbc5.jar faylını yükləyirik. Əgər Oracle saytına login olmamısınızsa, onda istifadəçi adı və şifrəni soruşacaq. OTN-də qeydiyyatdan keçmisinizsə, istifadəçi adını və şifrənizi yazın, daxil olun, drayveri yükləyin. Əks halda sign up now səhifəsinə gedib qeydiyyatdan keçin, avtomatik olaraq drayveri yükləmə səhifəsinə qayıdacaqsınız.

Netbeansdə yeni java proyekti yaradın.

2-ci səhifədə proyektin adını, yerini seçin, istifadə edəcəyimiz kitabxanaları ayrı qovluqda saxlamaq üçün “Use dedicated folder for storing libraries” seçin və finish düyməsinə vurun.

Yüklədiyimiz Oracle drayveri Netbeansdə qlobal kitabxana kimi əlavə edək, bu halda onu digər proyektlərdə də istifadə etmək olar.

Bunun üçün Tools menyusundan Libraries seçin.

Sol tərəfdə aşağıdakı “New Library” düyməsinə vurun və açılan pəncərədə Oracle_JDBC_Driver yazın.

Kitabxanamız sol tərəfdəki siyahıya əlavə ediləcək, onu seçib sağ tərəfdəki Add JAR/Folder düyməsinə vurun, yüklədiyimiz ojdbc5.jar faylını seçin və OK düyməsinə vurun. Oracle JDBC drayveri artıq qlobal kitabxana olaraq əlavə elədik.

Əlavə etdiyimi kitabxananı proyektə əlavə etmək üçün Windows menyusundan Projects seçin, sol tərəfdə Netbeansdəki proyektlərin siyahısı görünəcək, buradan proyektimizi seçirik, onun Libraries qovluğu üzərində sağ düyməni vurun, kontekst menyudan Add Library seçirik.

Açılan pəncərədən İmport düyməsinə vurub qlobal kitabxanaların siyahısında Oracle_JDBC_Driver seçirik, sıra ilə İmport LibraryAdd Library düymələrinə vururuq, nəticədə Oracle drayver proyektə əlavə olundu.

Əvvəldən qeyd edim ki, Oracle-ın nümunə istifadəçisi olan HR ilə qoşulub, ona aid Employees cədvəli ilə işləyəcik (istifadəçi adı və şifrə hr)

Əvvəlcə proqramın tam mətnini göstərib, daha sonra onun üzərində izah edim.

package jdbcdemo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Main { 
	public static void main(String[] args) {
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null; 
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			String url = "jdbc:oracle:thin:@localhost:1521:XE";
			String username="hr";
			String password="hr";
			connection = DriverManager.getConnection(url, username, password); 
			String sql = "select employee_id, first_name, last_name, salary from employees";
			preparedStatement = connection.prepareStatement(sql);
			resultSet = preparedStatement.executeQuery();
			while(resultSet.next()) {
				long id = resultSet.getLong("employee_id");
				String firstName = resultSet.getString("first_name");
				String lastName = resultSet.getString("last_name");
				System.out.println("" + id + " " + firstName + " " + lastName);
			}
		} catch (ClassNotFoundException ex) {
			System.out.println("Oracle jdbc driver yuklenmedi");
			ex.printStackTrace();
		} catch (SQLException ex) {
			System.out.println("Baza ile elaqeli problem var");
			ex.printStackTrace();
		} finally {
			try {
				resultSet.close();
				preparedStatement.close();
				connection.close();
			} catch(SQLException ex) {}
		}
	}
} 

İndi isə proqramı hissə hissə başa salım.

Class.forName("oracle.jdbc.OracleDriver"); Oracle drayveri yaddaşa yükləyir, əgər drayver tapılmasa, bu halda ClassNotFoundException xətası yaranacaq, onu try-catch bloku ilə tutub istifadəçiyə xəta mesajı göstərmək lazımdır.

String url = "jdbc:oracle:thin:@localhost:1521:XE";<br />
String username="hr";<br />
String password="hr";<br />
connection = DriverManager.getConnection(url, username, password);

Bu hissədə Oracle bazaya qoşuluruq.
Qoşulma sətrinin formatı belədir: jdbc:oracle:thin:@Oracle_Server:PORT:ORACLE_SERVİS_ADI
Bizim proyektdə ORACLE_SERVER=localhost yazılıb, çünki Oracle eyni işləyir, əgər başqa kompüterdə yüklü olan Oracle serverə qoşulmaq istəyiriksə, bu halda ya onun İP adresini, ya da şəbəkədəki adını yazmaq lazımdır.
Port = 1521, əgər dəyişiklik edilməyibsə, Oracle server avtomatik olaraq 1521-ci portdan gələn sorğuları qəbul edir.
ORACLE_SERVİS_ADI=XE, bir serverdə birdən çox Oracle baza qurulu ola bilər, onların hər birinin ayrı servis adı ilə işləyir, bu misalda servis adı=XE
Qoşulmaq üçün DriverManager sinifinin getConnection metodu istifadə olunur, ona parametr olaraq qoşulma sətri, istifadəçi adı və şifrə göndərilir. Əgər qoşulma zamanı hər hansı bir xəta baş versə, bu halda SQLException xətası yaranacaq və onu try-catch bloku ilə tutub, istifadəçiyə uyğun xəta mesajı göstərmək lazımdır.

String sql = "select employee_id, first_name, last_name, salary from employees";
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();

Burada sadə bir SQL sorğusu verilib, işçilərin kodunu, ad, soyadını və maaşını öyrənmək istəyirik.
PreparedStatement sinifini ilə bazaya istənilən sorğunu göndərmək mümkündür, executeQuery metodu ilə bazaya select sorğusu göndərmək olur.
executeQuery metodu cavab olaraq resultSet obyekti qaytarır və bu obyektdə cədvəldən seçdiyimiz məlumatlar saxlanılıb.

while(resultSet.next()) {
    long id = resultSet.getLong("employee_id");
    String firstName = resultSet.getString("first_name");
    String lastName = resultSet.getString("last_name");
    System.out.println("" + id + " " + firstName + " " + lastName);
}

Bu kod blokunda isə resultSet obyektindən məlumatları oxuyub konsolda göstəririk.

Ən sonda isə finally bloku ilə resultSet, preparedStatement və connection obyektlərini bağlayıb, baza ilə əlaqəni kəsirik.

finally {
   try {
      resultSet.close();
      preparedStatement.close();
      connection.close();
   } catch(SQLException ex) {}
}

Yazının sonuna gəldik, ümid edirəm ki, hər şey aydın oldu. Qaranlıq qalan məqamlar üçün şərh yazmaqdan çəkinməyin.

Proyektin tam versiyasını buradan yükləyə bilərsiniz.
Proyektin tam variantı
Zip faylının yüklənməsinə icazə verilmədiyinə görə faylın adını jdbdemo.doc olaraq dəyişdim, odur ki, kompüterinizə yüklədikdən sonra jdbcdemo.zip olaraq dəyişin.

Boxca.com-dan yükləmək üçün http://www.boxca.com/vkyeegmu6fkh/JdbcDemo.zip.html


Bazaya məlumat yazmaq, dəyişmək və silmək növbəti yazılarda olacaq.
Uğurlar!

Make a Comment

Alekber üçün bir cavab yazın Cavabı ləğv et

22 Cavab to “Java ilə Oracle bazasına qoşulmaq”

RSS Feed for Ramin Orucovun Java və Oracle bloqu Comments RSS Feed

Hardasa C#-daki ile eynidir. Bir connection.Open() yoxdur.
Xoshuma gelen terefi PreparedStatement,ResultSet ile butun SQL bazalarina sorgu gonderib,cavab ala bilirsen. C#-da heresi uchun ayridir. Bi de VS2010 Beta System.Data.OracleClient-i desteklemir :(((

Oracle-ın ODP.NET-i daha yaxşıdır.
Bilməyənlər üçün ODP.NET = Oracle Data Provider for .NET
http://www.oracle.com/technology/tech/windows/odpnet/index.html

.NET ancag microsoftun productlari ile isleye biler(

Konkret olaraq C# ilə Oracle və MySQL bazalarına qoşulmuşam, heç bir problem yoxdur.
Bir də Mono proyekti var, Unix, Linux üçün .NET framework yazıblar.

http://mono-project.com/What_is_Mono
http://en.wikipedia.org/wiki/Mono_%28software%29

Belə bir blog açdığınıza görə sizə təşəkkür edirəm.

Bazaya qoşulmaq istədiyimdə belə bir xəta çıxır :

java.sql.SQLException: ORA-01017: invalid username/password; logon denied

Çox sağ olun.
Oracle-a qoşularkən səhv istifadəçi adı və ya şifrə vermisiniz, zəhmət olmasa onu dəqiqləşdirin.

məlumatların çox xeyri oldu təşəkkürlər

[…] Salam, Bu dərsdə: 1.JDBC vasitəsilə JavaDB-yə qoşulmaq və əvvəlki dərsdə yaratmış olduğumuz kiçik table-a SELECT vermək. 2.Proyektə JDBC Driver(lər) necə əlavə olunur. 3.Kodu yazarkən qarşımıza çıxa bilən error-ların bəziləri də- göstərilmişdir. Koda kiçik dəyişiklər etməklə istənilən növ Java-nın dəstəklədiyi DBMS-ə qoşula bilərik. Sadəcə qoşulmaq istədiyimiz bazaya uyğun Driver-i əlavə etmək lazımdır. Məsələn, Oracle-a qoşulmaq haqqında dərs: Oracle-a qoşulmaq […]

JPA istifade etmek daha meslehetlidir. JDBC kohne texnologiyadir artiq ve zulmdur

Təzə proyektlər üçün JPA və ya Hibernate ola bilər, amma əlimdəki mövcud neçə illik köhnə proyektlər JDBC ilədir, onlar da çoxlu sayda PL/SQL prosedur ve funksiya istifadə edir, ona görə də JDBC istifadə etmək lazımdır. JDBC + iBatis + Spring kombinasiyası daha yaxşıdır.

Spring de kohne texnologiyadir 🙂 infoq.com bu sehifeni meslehet gorerdim follow elemeye. JSF kitabxanalar tam oturmasa da uje istifade edilmeye baslanildi

İnsaf yaxşı şeydi, Spring 3.0 köhnə texnologiya deyil axı 🙂 İnfoq.com-u izləyirəm, maraqlı yazılar, videolar olur.
JSF 2.0 tətbiq etmək barədə fikirləşirəm, PrimeFaces və Oracle ADF Faces xoşuma gəlir 🙂

Salam. Sizcə “DataSource using JNDI” nə dərəcədə yaxşı texnoogiyadı baza ilə işləmək üçün?

Sun Microsystems şirkəti hər yerdə DriverManager yerinə DataSource istifadə etməyi tövsiyə edir. JNDİ ilə bir dəfə mərkəzi şəkildə datasource resurslarını təyin edib idarə etmək daha asandır.

tewekkur.

[…] Ramin Orocuv – Java ilə Oracle bazasına qoşulmaq […]

Tewekkurler Ramin heqiqeten cox gozel ve aydin formada yazilib. Minnetdaram

Teshekkurler Ramin muellim…
Mende sadece olsun ORACLE servis adi SID=XE’den ferqli olaraq bildiyiniz kimi scolfield’dir 🙂

[…] Java ilə Oracle bazasına qoşulmaq January 201020 comments and 1 Like on WordPress.com, 5 […]

Cox sagolun Ustad cox yaxwi izah vermisiniz. Yeni baslayanlar ucun deyerli melumatlardir.


Where's The Comment Form?

    Haqqında

    Java ilə obyekt yönlü proqramlaşdırma, Java web proqramlaşdırma, Oracle SQL, PL/SQL proqramlaşdırma, optimallaşdırma

    RSS

    Subscribe Via RSS

    • Subscribe with Bloglines
    • Add your feed to Newsburst from CNET News.com
    • Subscribe in Google Reader
    • Add to My Yahoo!
    • Subscribe in NewsGator Online
    • The latest comments to all posts in RSS

    Meta

Liked it here?
Why not try sites on the blogroll...