Połączenie z bazą MSSQL java android

0

Witam serdecznie!
Zacząłem pisać aplikację na androida, wykonałem parę prostych zadań z tym związanych. Aktualnie chciałbym się połączyć z bazą MSSQL (mam gotową bazę), aby przetestować pobieranie danych z bazy. Przewertowałem Google w poszukiwaniu odpowiedzi jak zrobić to w miarę prosty sposób jednak nadal nie potrafię sobie poradzić z tym problemem.
To czego się dowiedziałem ogólnie (zdaję sobie sprawę, że brakuje mi sporo wiedzy, co do info poniżej mogę się mylić):

  1. SQLite to taka baza wewnętrzna telefonu nie postawiona na żadnym serwerze, na której aplikacja może zapisywać swoje dane. True?
  2. Do połączenia z bazą MYSQL widziałem rozwiązania typu : Aplikacja jest powiązana z plikiem PHP, który łączy się z bazą. Czy jest to ogólnie stosowane rozwiązanie czy raczej nie polecacie?
  3. Co do MSSQL widziałem w Javie, że używa się JDBC, ale jeśli piszę aplikacje na androida mogę również tego używać?
  4. Czy połączenie z bazą musi być zawarte w
protected void onCreate(Bundle savedInstanceState) {

?

A teraz tak ogólnie, czy możecie mi podsunąć rozwiązanie połączenia z bazą MSSQL? Nie można tego zrobić poprzez connectionstring tak jak w C#?
Bardzo proszę o wyjaśnienie, linki do jakiegoś Tutoriala, informacji czy czegokolwiek bo stoję w miejscu.

Pozdrawiam NieZnasz!

1
  1. To jest plikowa baza, która nie wymaga instalacji niczego.
  2. Raczej nie jest zalecane wrzucanie do aplikacji klienckiej informacji o tym jak łączyć się z bazą. Dużo lepszym rozwiązaniem jest postawienie pewnej warstwy pośredniej z którą komunikuje się aplikacja.
  3. http://developer.android.com/reference/java/sql/DriverManager.html
  4. Czy musi? Nie ;]
0

Nie udało mi się połączyć z bazą wchodzi do try i od razu wychodzi po próbie realizacji pierwszej linii kodu. Podpiąłem SQLJDBC próbowałem też z JTDS, w manifeście ustawiłem (chociaż to chyba nie jest konieczne)

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

... Kod :

public void ConnectToDatabase(){
		TextView num = (TextView) findViewById(R.id.message);
		num.setText("Ok");
	    try {
	    	
	         // SET CONNECTIONSTRING
    	     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	         num.setText("Ok22");
	         String username = "xx";
	         String password = "xx";
	         Connection DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://192.168.1.169/bowling;user=" + username + ";password=" + password);
	    
            Log.w("Connection","open");
	        Statement stmt = DbConn.createStatement();
	        ResultSet reset = stmt.executeQuery(" select * from dbo.Users ");

	        num.setText(reset.getString(1));

	        DbConn.close();

	        } catch (Exception e)
	        {
	        Log.w("Error connection","" + e.getMessage());
	        }
	}

LOG:

05-08 11:49:11.987: E/Launcher(2408): Error finding setting, default accessibility to not found: accessibility_enabled
05-08 11:49:12.082: E/MtpService(12412): In MTPAPP onReceive:android.intent.action.BATTERY_CHANGED
05-08 11:49:12.087: E/MtpService(12412): battPlugged Type : 2
05-08 11:49:26.752: E/WifiHW(2119): ##################### set firmware type 0 #####################
05-08 11:49:27.302: E/Watchdog(2119): !@Sync 2865
05-08 11:49:31.392: E/WifiHW(2119): ##################### set firmware type 0 #####################
05-08 11:49:52.127: E/MtpService(12412): In MTPAPP onReceive:android.intent.action.BATTERY_CHANGED
05-08 11:49:52.127: E/MtpService(12412): battPlugged Type : 2
05-08 11:49:57.307: E/Watchdog(2119): !@Sync 2866
05-08 11:50:00.432: E/ClockAlarmWidget(13072): [AlarmWidgetIdManager] getListItem() : itemIndex=0, widgetID:1
05-08 11:50:00.437: E/ClockAlarmWidget(13072): [AlarmWidgetIdManager] getListItem() : ItemIndex exceed ListItemCount. itemIndex=1
05-08 11:50:00.437: E/ClockAlarmWidget(13072): [AlarmWidgetIdManager] getListItem() : itemIndex=1, widgetID:1

1 użytkowników online, w tym zalogowanych: 0, gości: 1