Soru & Cevap

Android ile Local Network MsSQL server bağlantı hatası

08.07.2015 - 11:37

Merhaba Arkadaşlar,

Local networkte bulunan mssql server 2008'e android ile bağlantı yapmak istiyorum.Bir çok araştırma yaptım , örnekleri inceledim ve denedim.

SQL server üzerinde kullanıcı-database yetkilendirmelerini yaptım,
SQL server 1433 nolu port ayarlarını yaptım,
Güvenlik duvarında 1433 nolu port ayarını yaptım,
Driver olarak "net.sourceforge.jtds.jdbc.Driver" ve "com.microsoft.sqlserver.jdbc.SQLServerDriver" ile ayrı ayrı örnekler denedim.

En son aşağıdaki örnek ile Null hatası aldım.

Eksik veya hata yaptığım noktalar nelerdir? Test edilmiş çalışan bir kod önerebilirmisiniz.

Teşekkürler,

try {
			            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			            
			            String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
			            		   "databaseName=DbTest;user=Test;password=1;";
			            
			            Connection con = DriverManager.getConnection(connectionUrl);
			            
			            
			            if (con != null) {
			                System.out.println("Connection Successful!");
			               
			            }
			        } catch (Exception e) {
			            e.printStackTrace();
			            System.out.println("Error Trace in getConnection() : " + e.getMessage());
			        }

 

270 Görüntülenme

5 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-57070-1436628141.png
kamilozcan
13.07.2015 - 07:26

Tekrar merhaba,

Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
değişikliğini yaptım,

sqljdbc4.jar ile driver hatası aldım bu nedenle driver olarak jtds-1.2.7.jar kullandım.

jtds kütüphanesini hem libs/jtds-1.2.7.jar ayrıca Java Build Path -> Add External JARs ile jtds-1.2.7.jar dosyası projeye ekledim.

Bu şekli ile bağlantı sağlandı.

Öncelikle Halit Peker ve yönlendirme yapan diğer arkadaşlara teşekkür ederim.

 

picture-46518-1428343928.jpg
halitpeker
13.07.2015 - 02:58

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

yerine                  

  Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

bunu bir denermisin olmadıgı taktirde sana örnek baglantı yollayacagım.

Profile picture for user doruksucs
doruksucs
12.07.2015 - 01:25


Class.forName("com.mysql.jdbc.Driver");

Connection conn = null;

conn = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","kullanıcıadi", "parola")

şunu denesene try/catch içinde
 

Kamil ÖZCAN
12.07.2015 - 01:36
mevcut driver ile hata aldım. Bağlantı kurmak istediğm database MsSql2008, sizin yazdığınız mysql cümlesi ile yaplıabilir mi ?
picture-57070-1436628141.png
kamilozcan
10.07.2015 - 08:06

Merhaba,

Manifestt izinler aşağıdaki gibi;
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

jtds kütüphanesi hem libs/sqljdbc4.jar ayrıca Java Build Path ->  Add External JARs ile sqljdbc4.jar dosyası projeye ekli.

Sorgunun başına söylediğiniz gibi kodları yerleştirdim

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

çalıştırdığımda aldığım hata;

Hata: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "Socket closed". ClientConnectionId:44be227c-8b55-4a34-97b5-43b47b687c04
 

 

Yukardaki değişiklikler sonrası oluşan tam kod;

package com.DBtestconnect.DBtest;


import android.os.Bundle;
import android.os.StrictMode;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.sql.*;



public class Giris_ekran extends Activity {


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


@SuppressLint("NewApi")
public void onClick(View view) {

	
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);



try {
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
					
		String connectionUrl = "jdbc:sqlserver://192.168.1.34:1433;databaseName=DBTest;user=sa;password=1;";;
		Connection con = DriverManager.getConnection(connectionUrl);
								
		Statement statement = con.createStatement();
		String queryString = "select name from sys.databases";
		ResultSet rs = statement.executeQuery(queryString);
		while (rs.next()) {
			System.out.println("DBList: " + rs.getString(1));
		}
							
		
	} catch (Exception e) {
		e.printStackTrace();
		System.out.println("Hata: " + e.getMessage());
	}
					
					
}
});

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.giris_ekran, menu);
return true;
}
}

 

/sites/default/files/cevaplar/dosya/2020/file-addjars.png /sites/default/files/cevaplar/dosya/2020/file-libs.png
picture-46518-1428343928.jpg
halitpeker
09.07.2015 - 03:36

1. Manifestten internet iznini ver

 <uses-permission android:name="android.permission.INTERNET" />

2. Baglantı için gereklı kütüphaneyi indir ve uygulamana ekle

Link : http://sourceforge.net/projects/jtds/files/jtds/

3.son olarak sorgularını bir thread içinde yap

    yada bunu sorgunun basına ekle

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
 StrictMode.setThreadPolicy(policy);

 

Bu aşamalar düzenli yapıldıgında mssql sorgusu calısacaktır.

 

anıl
26.10.2015 - 08:53
burda anlamadıgım bir nokta var lütfen yardımcı olabılırmısınız 1-sql bağlantısını yaptıktan sonra kayıt eklemek için bir yer göremiyorum atıyorum 2adet texbox+ekle butonu 2-sql bağlantısını yaptıktan sonra datagiridvieww ile listeleye bilirmiyiz 3-bunların hepsını androidde studioda denedim fakat olmadı yardımcı olursanız sevınırım iyi akşamlar