-- Java, Oracle, PL/SQL

Java ve Oracle ile PL/SQL Prosedür Kullanımı

Genel olarak video eğitimlerimi .NET teknolojisi ve C# programlama dili uygulamaları üzerine hazırlıyordum. Artık Java ve bir kaç farklı dil üzerine de makale ve video eğitim çekimleri hazırlayacağım. Bu makalemde ise temel olarak Java ve Oracle ile nasıl stored procedure(saklı yordam) uygulaması geliştirilebileceğini anlatacağım.

Kullanılan Teknolojiler;

Java 1.7 JDK
Oracle 11g r2 XE (HR Şema)
NetBeans IDE 7.4
JDBC Driver

Uygulamayı özel bir demo olarak hazırlamam nedeniyle, öncelikle veritabanı tablosunu ve diğer PL/SQL kodlarını inceleyelim.

– Users adında yeni bir tablo oluşturalım.

CREATE TABLE USERS 
(
  USERID NUMBER NOT NULL 
, USERNAME VARCHAR2(20 BYTE) NOT NULL 
, FIRST_NAME VARCHAR2(30 BYTE) 
, LAST_NAME VARCHAR2(30 BYTE) 
, EMAIL VARCHAR2(60 BYTE) NOT NULL 
, ISACTIVE NUMBER 
, CONSTRAINT USERS_PK PRIMARY KEY 
  (
    USERID 
  )
  ENABLE 
) 
LOGGING 
TABLESPACE "USERS" 
PCTFREE 10 
INITRANS 1 
STORAGE 
( 
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1 
  MAXEXTENTS 2147483645 
  BUFFER_POOL DEFAULT 
);

– UserID sütununa otomatik artan bir değer verebilmek için yeni bir Sequence oluşturalım.

CREATE SEQUENCE USERS_SEQ INCREMENT BY 1 MAXVALUE 9999 MINVALUE 1 CACHE 20;

– Tabloya veri eklemek için kullanacağımız PL/SQL prosedürünü oluşturalım.

CREATE OR REPLACE PROCEDURE pr_UserAdd
(
  p_userName  IN VARCHAR2,
  p_firstName IN VARCHAR2,
  p_lastName  IN VARCHAR2,
  p_email     IN VARCHAR2,
  p_isActive  IN NUMBER,
  p_Status    OUT NUMBER
)
AS
BEGIN
  INSERT INTO Users(USERID, USERNAME, FIRST_NAME, LAST_NAME, EMAIL, ISACTIVE) 
              VALUES(Users_Seq.NextVal, p_userName, p_firstName, p_lastName, p_email, p_isActive);
  p_Status := 1;
END pr_UserAdd;

Artık Java ile veritabanı uygulamasınını hazırlamak için gerekli tüm veritabanı işlemlerini tamamladık. Şimdi Java ile ilgili işlemleri gerçekleştirelim.

– NetBeans ile yeni bir Java projesi oluşturalım.

– Veritabanı işlemi gerçekleştireceğimiz için, projenizdeki Libraries -> Add JAR/Folder… seçeneğini kullanarak projenize JDBC Driver’ınızı ekleyin.

– Main metodunun bulunduğu Java dosyası içerisinde aşağıdaki kodları yazın.

package javaoracleprocapp1;
import java.sql.*;

public class JavaOracleProcApp1 {
    public static void main(String[] args) {
        // Bağlantı nesnesini NULL olarak oluşturuyoruz.
        Connection conn = null;
        try
        {
            // Veritabanı sunucusu ile ilgili tüm ayarları ger
            String driverName = "oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);
            String serverName = "127.0.0.1";
            String portNo = "1521";
            String sID = "XE";
            String uri = "jdbc:oracle:thin:@"+serverName+":"+portNo+":"+sID;
            String userName = "HR";
            String pwd = "hr";
            conn = DriverManager.getConnection(uri,userName,pwd);

            // Prosedürü çalıştırmak için CallableStatement oluşturup conn.prepareCall() ile prosedürü tanımlıyoruz.
            CallableStatement cs = conn.prepareCall("{call pr_UserAdd(?,?,?,?,?,?)}");
            // Tanımladığımız prosedüre ait parametre atamalarını gerçekleştiriyoruz.
            cs.setString("p_userName", "Labs");
            cs.setString("p_firstName", "Cihan");
            cs.setString("p_lastName", "Özhan");
            cs.setString("p_email", "cihan.ozhan@hotmail.com");
            cs.setInt("p_isActive", 1);
            // p_Status parametresi OUT ile işaretlediğimiz için diğerlerinden farklı olarak çağırıyoruz.
            cs.registerOutParameter("p_Status", Types.INTEGER);
            // Sorgumuzu çalıştırmak için executeQuery() kullanıyoruz.
            cs.executeQuery();
            // OUT ile işaretlenen p_Status parametresini bir değişkene atayarak çıktı oluşturuyoruz.
            int outParam = cs.getInt("p_Status");
            System.out.println("İşlem başarıyla gerçekleşti.");
            System.out.println("Durum : " + outParam);
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

Projeyi çalıştırdığınızda aşağıdaki gibi bir sonuç dönecektir.

1

Oracle SQL Developer ile veritabanındaki Users tablosuna baktığımızda ise verinin eklendiğini görebiliriz.

2

İyi çalışmalar.

Yorumla

Yorum