"Android cihazlardan SQL Server'a nasıl erişirim" şeklinde bana ulaşan bir soruya yanıt olması açısından bu blogu yazıyorum umarım yararlı olur.
Öncelikle bilinmesi gereken önemli bir nokta var: veritabanlarına mobil cihazlardan doğrudan veritabanı protokolü üzerinden iletişim kurmak doğru değildir. Bunun bir kaç nedeni var:
1) Veritabanlarının portları farklı olabilir ve bu portlar güvenlik duvarları ile kapatılmış olabilir. Bu portlar üzerinden bağlantı kurmak da güvenlik duvarları neneniyle engellenmiş olabilir.
2) Veritabanları dış erişimlere tamamen kapalı olabilir.
3) Mobil uygulamalara veritabanı sürücüsü (database driver) eklemek harici bir kütüphane olduğundan uygulamanın boyutunu artırır.
Uygun olan yöntem API veya Web Servisi kullanmaktır.
Fakat gerçek hayat bazen bazı uygun olmayan koşulları zorunlu kılıyor ve bir mobil ugyulamanın bir veritabanına erişmesi ihtiyacı ortaya çıkabiliyor. Bu durumda da Android'in framework altyapısı olan Java'nın veritabanı bağlanırlığı (JDBC) yardıma yetişiyor.
Yani Android cihazlardan JDBC ile veritabanlarına bağlanmak mümkün.
Android cihazlardan SQL Server'a bağlanmak için dikkat edilecek hususlar şöyle:
1) Android uygulamasına AndroidManifest.xml dosyasından internet izni vermek gerekiyor.
<uses-permission android:name="android.permission.INTERNET" />
2)
net.sourceforge.jtds.jdbc.Driver sürücüsünü kullanmak gerekiyor. Microsoft'un kendi sürücüsü ile bu işlem gerçekleşmiyor.
3) net.sourceforge.jtds.jdbc.Driver sürücüsünün bağlantı şekline dikkat etmek gerekiyor. Örnek : jdbc:jtds:sqlserver://IP_ADRESI:1433;databaseName=VERITABANI_ADI
Bunların dışında normal JDBC bağlantısını aynen yapabilirsiniz. Örnek:
Connection conn = null;
String url = "jdbc:jtds:sqlserver://10.39.4.103:1433;databaseName=VERITABANI_ADI";
String driver = "net.sourceforge.jtds.jdbc.Driver";
String userName = "KULLANICI_ADI";
String password = "SIFRE";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
Class.forName(driver).newInstance();
Thread thread = new Thread(new Runnable(){
public void run() {
try {
conn = DriverManager.getConnection(url , userName, password);
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
});
thread.start();
} catch (Exception e) {
e.printStackTrace();
}
}
Android projenize SQL Server JDBC sürücüsünü
libs dizinine göndermeniz yeterlidir.
libs dizini yoksa oluşturmalısınız.
Bu şekildeki bir bağlantıyı yaptığım ve kendi lokal ağımda denediğim bir örneği aşağıdaki adresten indirebilirsiniz:
http://download.muharremtac.com/android_sqlserver.zip