• java database connectivity, odbc ile çalışabildiği gibi native connection ile de çalışabilir, sanıldığının aksine odbcnin karşıtı değil, odbcyi de kapsayan daha üst bir kavramdır.
  • (bkz: ado net) (bkz: oledb)
  • efendim jdbc, database eri$imi icin standart bir katman saglamasina ragmen bunu query'ler icin yapmaz. yani database degi$tirince hop diye gecemezsiniz butun query'lerinizi gozden gecirmeniz gerekir. bu sorun icin onerilen j2ee cozumu ise ejb ql'dir.

    (bkz: ejb ql)
  • (bkz: #7768450)
    (bkz: jndi)
  • sqlserver ile bağlanmak için driver gerektiren olay
    driver yükledikten sonra bile bağlanmayı insanın burnundan getiriyor. halbuki microsoft visual studio'da c sharp'a torpil geçiyor, iki üç tıklamayla olayı bitiyor. bu kadar da olmaz
  • herhangi bir rdbms'e baglanmak icin "tanimi geregi" driver gerektirir. dogasi o dur, calisma mekanizmasi budur.

    microsoft visual studio'da c sharp'a torpil geciyor iki tiklama ile ms sql server'a baglanabiliyoruz demek, "abd, vatandaslarina torpil geciyor, sinir kapisindan onlar iki sn de geciyor ayri kapidan, biz mal gibi diger kuyrukta bekliyoruz" demekle ayni seydir.

    bu kadar da olmaz.
  • (bkz: hibernate)
  • jdbc, oci/#18270669 layer'indaki bir kısıtlamadan dolayı oracle stored procedure'lerine boolean (in/out) parametrelerini desteklemez. eğer boolean değerle çalışmak zorundaysanız wrapper procedure yazarak bu sıkıntı aşılabilir. java'dan boolean yerine int olan procedure cagirilir, bu procedure icinde ise int yerine gerekli boolean degeri kullanilarak diger procedure cagirilir. oracle'ın da önerdiği bu yöntem şöyledir;

    create or replace procedure boolproc(x boolean)
    as
    begin
    [...]
    end;

    create or replace procedure boolwrap(x int)
    as
    begin
    if (x=1) then
    boolproc(true);
    else
    boolproc(false);
    end if;
    end;

    java tarafı ise şöyle olmalıdır;

    [...]
    connection conn = ods.getconnection();
    callablestatement cs = conn.preparecall("begin boolwrap(?); end;");
    cs.setint(1, 1);
    cs.execute();
  • oluşturulan herhangi bir connection'ın getmetadata metodu çağrılarak bir databasemetadata nesnesi elde edilebilir ve bu nesneyle veritabanındaki tablo, alan, constraint(pk, fk, unique, check), index vb. bilgiler alınabilir gibi görünür. sevinirsiniz her veritabanına ayrı kod yazmam gerekmeyecek diye. ama o da ne, her veritabanı için farklı sonuçlar dönmektedir. "unique'leri ver hacı" dediğinizde bir database pk'ları da döndürürken diğeri sadece unique index'leri döndürür. tablo alanlarını almak istersiniz, tablo adını verdiğiniz parametrenin adı "name" değil "pattern"dir, bir veritabanı sistemi "pattern" olarak yorumlayıp verdiğiniz isimle başlayan tabloların alanlarını döndürürken, diğeri "name" olarak yorumlayıp sadece adı tam uyan tablonun alanlarını döndürebilir. e hani standart? bunu ayıklamaya uğraşacağıma her veritabanı sistemi için sql yazar kendim alırım bilgileri.

    "oleey tablolar geliyo, aa pk'lar da geliyo ne güzel ne güzel" derken saatler harcadım, sonunda bu saçmalıklar çıktı, kod çöpe..
  • bir library değil, apidir özünde. exception,types ve time** classları haricinde interfacelerden oluşur. üzerinde çalışmak istediğiniz db ise bu interfacelere uygun kendi implementayonu ile jdbc driverını yazar siz de alır kullanırsınız efendi efendi bu implementasyon librarylerini*.
hesabın var mı? giriş yap