Java ile MsSql Server Bağlantısı

Ocak 28, 2012

 

Java ile Sql Server ‘a bağlanmak için 2 yol tercih edebiliriz bunlardan ilki odbc ile bağlanma ki bu yavaş ve stabil çalışmayan bir yöntem olduğu için pek tercih edilmeyen bir yöntemdir.Diğer bir yöntem ise  Microsoft’un yayınladığı jdbc driver’ı ile bağlanmadır.Jdbc driver’ını buradan indirebilirsiniz.Su an en son olarak 3.0 versiyonu yayınlanmakta, web sayfasındaki seçeneklerden .exe uzantılı dosyayı bilgisayarınıza indirdiğiniz zaman dosyaya sağ tılayıp buraya çıkar diyebilirsiniz.Dosyanın içerisinde sqljdbc4.jar dosyasını uygulamamıza eklememiz lazım.Bu dosya yardımı ile java uygulamamız üzerinden SqlServer ‘a bağlantı kurucaz.Uygulamamızı eclipse üzerinde geliştiriyor olacağız ilk olarak bir java projesi oluşturalım ben uygulamamızın adını JavaConnectToMsSql olarak verdim.Sorgulama yapmak için sql server’da yeni bir tane veri tabanı oluşturalım. Veri tabanımız DBJAVA içerisinde sadece 1 tablo bulunmakta bu tablonun alanları ise şunlar : ID, Ad, Soyad, Yas  alanlardan ID Identity , Ad ve Soyad nvarchar(50) , Yas ise int tipinde.Bu şekilde veri tabanımızıda oluşturduktan sonra indirdiğimiz jdbc dosyasını uygulamamıza ekleyelim bunun için şu yolu izleyelim Uygulamamıza sağ tıklayalım Properties seçelim daha sonra açılan pencereden sol taraftaki menüden Java Build Path kısmına tıklayalım ve sağ tarafta beliren kısımdan Add External JARs… buton’una tıklayalım ve indirdiğimiz dosyayı seçelim bu şekilde indirdiğimiz jdbc dosyasını projemize tanıtmış olduk.Bu işlemi .Net tarafındaki referans ekleme olarak düşünebilirsiniz.Bu aşamadan sonra kodlamamıza geçebiliriz ilk olarak oluşturduğumuz veri tabanına kayıt ekleyelim

 

ConnectionString ‘imizi global bir değişkende tutalım Ekleme ve Listeleme için 2 tane ayrı method yazacağımız için

 

 

Local deki veri tabanımıza bağlanacağımız için localhost:1433 olarak belirttim eğer sizde port numarası değişik ise o kısmı değiştirmeniz gerekebilir databaseName olarak biraz önce oluşturduğumuz veri tabanını belirttim user olarak java şifresi ise 123456 olarak ayarlarımı atıyorum.Uzak bir sunucuya bağlanmak istiyorsanız localhost yazan kısma sunucunuzun ip adresini girmeniz gerekmektedir tabi port kısmına da dikkat etmek şartı ile.

 

Bu şekilde bağlantımızı sağladıktan sonra Ekle method’umuzu yazalım

 

 

 

 

Class.forName diyerek uygulamamıza eklediğimiz jdbc dosyasını, driver’ını çalışma zamanında tanıyoruz , içerisindeki sınıflara bu şekilde ulaşıyoruz.Bu satırı yazmazsak jdbc dosyasını okuyamadığımız için sql server’a bağlanmamızda söz konusu olmayacaktı.Daha sonra Connection nesnesi oluşturuyoruz ve global olarak tanımladığımız conStr değişkenimizi burada kullanıyoruz.Sorgumuzu yazdık ve executeQuery diyerek çalışmasını sağladık.Burada veri tabanına Gökhan Akgöl 22 olarak bir kayıt ekledik.

 

 

Listele method’umuzuda küçük bir değişiklik ile yazalım

 

 

 

 

Burada yaptığımız değişiklikler ise sorgu sonucunu bir ResultSet nesnesine almak daha sonra ResultSet ‘in içerisindeki veriler arasında dönmeye başlıyoruz next() method’u ile ve sırası ile hepsini yazdırıyoruz.Burada dikkat etmeniz gereken kısım ise şurası : resultSet değerinin getString method’unun 2 tane kullanım şeklini burada görüyoruz, ilki parametre olarak tablonuzdaki alanların index numarasını verebilmeniz bir diğeri ise kolon adını verebilmeniz 2 yolda aynı sonucu geri döndürecektir.

 

 

 

Ekran çıktısı

 

 

 

 

Kaynak Kodları Buradan İndirebilirsiniz

posted in Java by gokhan

Follow comments via the RSS Feed | Yorum yapın | Trackback URL

18 Comments to "Java ile MsSql Server Bağlantısı"

  1. Ahmet Güler wrote:

    Merhaba Gökhan Bey ben bir şey soracaktım java yeni başladım dot.net tecrubem var select* sorguda alan belirtmemiz gerekmeden sorguyu nasıl çekebilirim resultSet.getString(1) neden 1′dı 0′ değilde

  2. Ahmet Güler wrote:

    teşekür ederim

  3. Ahmet Güler wrote:

    getsetting(0) diye bir dizin olmadığı için java da 1 den başlıyormuş peki ama aynı cümleyi bir kaç defa insert edemiyorum parametreleri değiştirince insert işlemim başarılı oluyor…. :)

  4. Ahmet Güler wrote:

    tmm hocam düzelttim bir sürü yorum yazdım ama sonunda sonuça ulaştım benim sql server da bi sorun oluştu tekrardan kurduktan sonra düzeltildi.

  5. gokhan wrote:

    Merhaba Ahmet Bey , yorumlarınızı okudum sorununuzu kendi cabanızla çözmenize sevindim eğer takıldığınız herhangi bir nokta varsa yardımcı olayım.Şunu belirtmemde fayda var bu tip sorunlar her .Net ‘cinin başına geliyordur sanırım çünkü temel yaklaşımlar olarak birbirlerine benzeselerde sonuçta iki dilinde kendine has yazım kuralları ve yapıları var.

    İyi çalışmalar

  6. Ahmet Güler wrote:

    Gökhan Hocam Java ile ilgili makalelerinizin devamını dört gözle bekliyorum…

  7. arif wrote:

    kullancı ismi ve şifre olayını tam anlayamadm.tecrübesizim de.şimdi ben 2008 R2 SQL de çalışıyorm database adım master ama benim herhangi bir kullancı adı ve şifrem yok bu database im için.buraya hangi değerleri girmem gerekiyor?

  8. gokhan wrote:

    Merhaba Arif

    İlk olarak sana önerim kendine oluşturduğun veri tabanına özel bir kullanıcı ekle zaten bu kullanıcıyı eklerken sen bir kullanıcı adı ve şifre belirliyeceksin işte programdada o kullanıcı adı ve şifre yi gerekli değerlere ataman lazım.Veri tabanına kullanıcı ekleme işlemi için takılırsan yine yaz yardımcı olmaya çalışayım.

    İyi çalışmalar

  9. arif wrote:

    tamamdırr sonunda bağlandımm yol tarfin için Teşşkür Ederim :)

  10. Vural wrote:

    Merhaba, ben bahsettiğiniz gibi kullanacağım veritabanı için bir kullanıcı ekledim. Fakat yine bağlantıda sorun yaşıyorum. Aşağıdaki hataları alıyorum, yardımcı olabilir misiniz?

    Bağlantı kurulamadı
    com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user ‘admin’. ClientConnectionId:1898492f-cf8f-47b3-b007-efa667b652ff
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at Test.main(Test.java:20)

  11. gokhan wrote:

    Merhaba Vural

    Hatayı inceledim sanırım hatan veri tabanına bağlanmaya çalışırkenki yazdığın bağlantı cümlen ile ilgili.Veri tabanında port numaran tam olarak ne biliyormusun? Birde bağlantı cümlenin özel kısımlarını çıkartarak paylaşabilirmisin?

  12. yusuf wrote:

    gökhan hocam merhabalar. Benm ms sql servera bağlanmakda herhangi bir sorunum olmadıgı halde sanki hiç baglanmamısım gibi hiç bir sonuc vermior. Gereken bütün acıklamaları da okudum bir sürü siteden de faydalandım ama gelin görün ki bir tütlü sql server 2008 deki veri tabanıma birakin kayıt eklemeyi daha bir verisini bile cekemedim :( kafayı yicem yaa :( ne yapcam bilmiyorum hocam. Allah rızası için yardım edin. Mailime mesaj gönderirseniz cok cok duacınız olurum :( neden olmuyor neden…

  13. gokhan wrote:

    Merhaba,

    Bağlanmaya çalıştığın sqlserver local bilgisayarındamı uzak bir sunucudamı? uzak bir sunucunda ise bu şekilde bağlanabiliyor olman lazım ama local bilgisayarında ise ip ve port numaralarını yanlış yazdığın için bağlanamıyorsundur bilgisayarındaki sqlserver ‘ın tam olarak adresini yazmaya çalış o zaman örnek kodlarla veri tabanına ulaşabilirsin

  14. yusuf wrote:

    Hocam sizin örnek üzerinden de gitttim bir sürü arastırma da yaptım lakin yok olmuyor. ip addresini de dogru yazıyorum. hadi o olmadı onun yerine localhost yazsam bile olacagına dair yazılarda okudum denedim ama gene olmadı :( örnek kodlarımı gönderiyorum umarm bi çare bulunur :( Yoksa hocaya projeyi yapamadım diyerek FF i alacağım :( off yaa

    package com.example.odev;

    import java.sql.*;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    //import net.sourceforge.jtds.jdbc.*;
    import android.widget.Toast;

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView tv = (TextView) findViewById(R.id.textView1);
    Button btnSorgula=(Button)findViewById(R.id.button1);

    btnSorgula.setOnClickListener(new View.OnClickListener()
    {

    @Override
    public void onClick(View arg0)
    {
    try
    {

    Class.forName(“net.sourceforge.jtds.jdbc.Driver”).newInstance();
    Connection conn = DriverManager.getConnection(“jdbc:jtds:sqlserver://192.168.2.3:1433;databaseName=Kullanicilar”,”",”");
    Statement query = conn.createStatement();
    ResultSet rs = query .executeQuery(“select * from Kullanicilar.dbo.Kisisel_Bilgiler where Ad like ‘%”+tv.getText()+”%’ “);
    String yazi = “”;

    while (rs.next()) {

    yazi = rs.getString(“Ad”);

    }
    if (yazi!=”")
    {
    // işlemler
    }

    else
    {
    Toast.makeText(getApplication(), “Kullanici sistemde mevcut değil.”, Toast.LENGTH_SHORT).show();
    }

    conn.close();

    } catch (Exception e) {

    e.printStackTrace();

    }

    }
    });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
    }

    }

  15. yusuf wrote:

    kafayı yicem yaa :/ deniyorum ama olmuyo yaa.. Sunu anladım ki program Class.forName(“net.sourceforge.jtds.jdbc.Driver”).newInstance(); satırına geldiği andan itibaren alt satırları hiç görmüyor ve kaale almıyor. Nasıl olacak hocam yaa :/

  16. ilhan wrote:

    güzel olmuş kardeş sağol bir hata var onuda söyleyim

    ekle metodunda
    executeQuery yanlış olmuş sanırım excute olamsı gerekiyor
    dönen sonuç yok.

    teşekkürler

  17. yeşim keleş wrote:

    iyi bir site olduğunu düşünüyorum

  18. yeşim keleş wrote:

    merhaba hocam java sql server bağladığımda bu hataları alıyorum nasıl çözebilirim
    Ara 08, 2013 11:41:00 PM telefonrehberi.telefonform jButton1ActionPerformed
    SEVERE: null
    java.sql.SQLException: The url cannot be null
    at java.sql.DriverManager.getConnection(DriverManager.java:564)
    at java.sql.DriverManager.getConnection(DriverManager.java:243)
    at telefonrehberi.telefonform.jButton1ActionPerformed(telefonform.java:203)
    at telefonrehberi.telefonform.access$200(telefonform.java:10)
    at telefonrehberi.telefonform$3.actionPerformed(telefonform.java:98)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:682)
    at java.awt.EventQueue$3.run(EventQueue.java:680)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:696)
    at java.awt.EventQueue$4.run(EventQueue.java:694)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

    Exception in thread “AWT-EventQueue-0″ java.lang.NullPointerException
    at telefonrehberi.telefonform.jButton1ActionPerformed(telefonform.java:209)
    at telefonrehberi.telefonform.access$200(telefonform.java:10)
    at telefonrehberi.telefonform$3.actionPerformed(telefonform.java:98)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:682)
    at java.awt.EventQueue$3.run(EventQueue.java:680)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:696)
    at java.awt.EventQueue$4.run(EventQueue.java:694)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

Leave Your Comment

*

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org