Quantcast
Viewing all articles
Browse latest Browse all 4270

Connection nesnesini Injecte etme

Merhabalar. Bir deneme projemde JDBC ile oluşturduğum Connection nesnesini Inject annotasyonu ile injekte etmek istiyorum. Inject yapmayıp Veritabani vt=new Veritabani(); dediğimde proje çalışmasına karşın, Inject Veritabani vt; dediğimde nullpointerexception hatası alıyorum. Bu tip nesnelerin enjeksiyonu mümkün değil mi yoksa ben mi bir hata yapıyorumdur.

Sorunun açıklayıcı olması açısından kodları gönderiyorum. Teşekkürler.

Interface sınıf

package com.orhan.mini_cbs.vt;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 *
 * @author Orhan
 */
public interface VeritabaniAy {
   Connection baglantiKur();
   void baglantiKapat(ResultSet sonucT, Statement beyan);
}

Implement sınıf

    package com.orhan.mini_cbs.vt;

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

/**
 *
 * @author Orhan
 */
public class Veritabani implements VeritabaniAy{
    private static final String SURUCU="org.apache.derby.jdbc.ClientDriver";
    private static final String VT_ADRES="jdbc:derby://localhost:1527/mini_gis";
    private static final String KULLANICI="orhan";
    private static final String PAROLA="2524305";
    private static Connection vt_baglanti=null;
    @Override
      public Connection baglantiKur(){

         try{
              Class.forName(SURUCU);
              System.out.println("Sürücü yerleştirildi...");
         }catch(ClassNotFoundException cnfe){
             System.out.println(cnfe.getMessage());
         }
         try{
         vt_baglanti=DriverManager.getConnection(VT_ADRES, KULLANICI,PAROLA);
        System.out.println("Bağlantı kuruldu...");
         }catch(SQLException sqle){
             System.out.println(sqle.getMessage());
         }
         return vt_baglanti;
     }
    @Override
   public void baglantiKapat(ResultSet sonucT, Statement beyan){
        try {
            vt_baglanti.close();
            System.out.println("Bağlantı kapatıldı...");
        } catch (SQLException sqle) {
            System.out.println(sqle.getMessage());
        }
   }
}

Enjeksiyonun yapılacağı sınıf

package com.orhan.mini_cbs.srg;

import com.orhan.mini_cbs.vt.VeritabaniAy;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.inject.Inject;

/**
 *
 * @author Orhan
 */
public class Sorgular implements SorgularAy{

    @Inject
    private VeritabaniAy vt;
    private Statement beyan=null;
    @Override
    public ResultSet hepsiniGetir(String sorgu) {
       //Veritabani vt=new Veritabani();
        Connection baglanti=vt.baglantiKur();

        try{
            beyan=baglanti.createStatement();
            ResultSet sonucT=beyan.executeQuery(sorgu);
            return sonucT;
        }catch(SQLException e){
            System.out.println("Sorgu hatası : " +e.getMessage());
        }   
        return null;
    }
}

Main sınıfı

package com.orhan.mini_cbs.srg;

import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Orhan
 */
public class Uygulama {
    public static void main(String[] args){
        Sorgular sorgula=new Sorgular();
        ResultSet sonuc=sorgula.hepsiniGetir("Select * from sekil");
      try{ 
        while(sonuc.next()){
        System.out.println(sonuc.getString(2));
        }
      }catch(SQLException e) {
          System.out.println("Hata var!" + e.getMessage());
      }
    }
}

Sonuç

Exception in thread "main" java.lang.NullPointerException
    at com.orhan.mini_cbs.srg.Sorgular.hepsiniGetir(Sorgular.java:28)
    at com.orhan.mini_cbs.srg.Uygulama.main(Uygulama.java:19)

Viewing all articles
Browse latest Browse all 4270