MS SQL Server’a JDBC İle Erişim
Microsoft’un SQL Server’ı, Java ile geliştirme yapanların en çok kullandıkları ya da tercih ettikleri veri tabanı ürünü değildir ama Javacılar, ihtiyaçlara göre zaman zaman Microsoft’un SQL Server’ını kullanmak durumunda olabilirler. Ben de daha önce SQL Server’ı kullanmıştım, hatta 90’lı yıllarda önce 6.5 sonra da 7.0 versiyonlarını kullandığımı hatırlıyorum. Bugün de bir vesile ile SQL Server 2008 R2 Express‘i kurdum makinama. Eskiden beri, özellikle de eğitim amaçlı olarak ihtiyacım olduğunda veri tabanına bağlantı sağlayıp sağlayamadığımı kontrol etmek üzere oluşturduğum ve Connection nesnesi üzerinde işlem yalıtım seviyesini (transaction isolation level) yine aynı nesne üzerindeki static final ve int 5 değerden birisi olarak geri döndüren getTransactionIsolation() metodunu çağıran ufak bir JDBC kodum vardır. Bu kodda pek çok farklı veri tabanında belirtilen değeri basan metotlarım vardır. Örneğin makinamdaki Oracle XE için bu metot aşağıdaki gibidir:
public static void connectOracleXE(){ String xeUrl = "jdbc:oracle:thin:@localhost:1521:XE"; try { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection xeConn = DriverManager.getConnection(xeUrl, "username", "password"); System.out.println("Transaction Isolation Level for Oracle XE: " + xeConn.getTransactionIsolation()); } catch (Exception e) { System.out.println("Problem: " + e.getMessage()); e.printStackTrace(); } }
Tabi ki bu kodun Oracle XE’nin varsayılan işlem yalıtım seviyesi olan “2”yi basabilmesi için CLASSPATH’de Oracle XE sürücüsüne ihtiyacımız var.
Benzer şeyi SQL Server için de yapabilmemiz için bu veri tabanı için JDBC sürücüsüne ihtiyacımız var. Microsoft’un SQL Server ailesi için ürettiği JDBC sürücüsüne buradan ulaşabilirsiniz. Bu sürücüyü kurduğunuzda içinden iki tane jar sürücü dosyası çıktığını göreceksiniz. sqljdbc.jar JDBC 3.0 sürücüsü olup JRE 1.6’yı desteklemediğinden büyük bir ihtimalle bir JDBC 4.0 sürücüsü olan sqljdbc4.jar’ı kullanacaksınız.
Bu sürücünün yüklenmesi gereken sınıfı “com.microsoft.sqlserver.jdbc.SQLServerDriver”dır. Ayrıca ayrıntılarına buradan ulaşabileceğiniz, URL gibi bazı bilgilere ihtiyacınız olacaktır. Bu arada makinanıza kurduğunuz SQL Server’e de bazı değişiklikler yapmak gerekecektir. SQL Server’ın 1433 nolu porta gelen her türlü TCP/IP çağrılarına cevap vermesi gibi. Bunun için de burada anlatılanları yapın. Artık aşağıdaki kodu çalıştırıp, “2” cevabını alabilirsiniz:
public static void connectSQLServer(){ String url = "jdbc:sqlserver://localhost\\SQLEXPRESS;databaseName=jpa; user=sa;password=password"; try { DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); Connection conn = DriverManager.getConnection(url); System.out.println("Transaction Isolation Level for SQL Server: "+ conn.getTransactionIsolation()); } catch (Exception e) { System.out.println("Problem: " + e.getMessage()); e.printStackTrace(); } }
Yukarıdaki URL için aşağıdaki farklı seçenekleri de kullanabilirsiniz:
String url = “jdbc:sqlserver://localhost\\SQLEXPRESS;databaseName=jpa;
user=sa;password=password”;
String url = “jdbc:sqlserver://localhost;instanceName=SQLEXPRESS;
databaseName=jpa;user=sa;password=password”;
String url = “jdbc:sqlserver://AKINLAPTOP;instanceName=SQLEXPRESS;
databaseName=jpa;user=sa;password=password;”;
// Istenirse varsayılan 1433 nolu port da belirtilebilir
String url = “jdbc:sqlserver://localhost:1433;instanceName=SQLEXPRESS;
databaseName=jpa;user=sa;password=password”;
// ya da aşağıdaki gibi
String url = “jdbc:sqlserver://localhost\\SQLEXPRESS:1433;
user=sa;password=password”;
Toplam görüntülenme sayısı: 4285