Страница 1 из 1

Подключение из Android к MS SQL 2008

Добавлено: 21 сен 2013, 18:37
MeAnAl
Здравствуйте!
Под андроид писать только начинаю. Есть задача для реализации: подключатся в БД MS SQL из планшета и менять данные в БД.
Для этого требуется как минимум подключится :)
И с этим проблема. В инете несколько примеров есть.
Но:
1. Я НИКОГДА не писал на Java (пишу более 15 лет на Delphi, SQL, 1C, бейсик, паскаль).
2. Мне пока еще трудно понимать что мне пишет отладчик :)

Вот что я проделал:
1. Скачать jtds-1.3.1.jar и sqljdbc4.jar, положил из в папку "workspace\HelloWord\libs" моего проекта. (может было бы и достаточно и одного из них?)
2. прописал код в проекте:

Код: Выделить всё

package com.example.helloword;

import java.sql.Connection;
import java.sql.DriverManager;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

	final String LOG_TAG = "myLogs";
	TextView tvHello;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvHello = (TextView) findViewById(R.id.textView1);
		
		try { 
				Class.forName("net.sourceforge.jtds.jdbc.Driver"); 
		} 
		catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	public void OnClick(View v) {
		try {
			Connection conn = null;
			String url = "jdbc:sqlserver://localhost\\SQL2005EXP:1433;DatabaseName=master";
			String name = "user";
			String password = "pass";
			try {
				conn = DriverManager.getConnection(url, name, password);
				Log.d(LOG_TAG, "ура");
			} catch (java.sql.SQLException e) {
				e.printStackTrace();
				Log.d(LOG_TAG, "не ура");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
И не подключается. Подскажите пожалуйста, в чем может быть дело?

Re: Подключение из Android к MS SQL 2008

Добавлено: 21 сен 2013, 19:55
rezak90
может вся проблема в том что в адресе localhost? сервер то не на телефоне находится))

Re: Подключение из Android к MS SQL 2008

Добавлено: 21 сен 2013, 20:03
MeAnAl
String url = "jdbc:sqlserver://192.168.0.1:1433;DatabaseName=master";
И вот так пробовал
Вот лог, может о чем то скажет:

Код: Выделить всё

09-21 17:01:34.910: W/System.err(561): java.sql.SQLException: No suitable driver
09-21 17:01:34.910: W/System.err(561): 	at java.sql.DriverManager.getConnection(DriverManager.java:182)
09-21 17:01:34.920: W/System.err(561): 	at java.sql.DriverManager.getConnection(DriverManager.java:209)
09-21 17:01:34.920: W/System.err(561): 	at com.example.helloword.MainActivity.OnClick(MainActivity.java:45)
09-21 17:01:34.940: W/System.err(561): 	at java.lang.reflect.Method.invokeNative(Native Method)
09-21 17:01:34.940: W/System.err(561): 	at java.lang.reflect.Method.invoke(Method.java:511)
09-21 17:01:34.950: W/System.err(561): 	at android.view.View$1.onClick(View.java:3039)
09-21 17:01:34.950: W/System.err(561): 	at android.view.View.performClick(View.java:3511)
09-21 17:01:34.950: W/System.err(561): 	at android.view.View$PerformClick.run(View.java:14105)
09-21 17:01:34.950: W/System.err(561): 	at android.os.Handler.handleCallback(Handler.java:605)
09-21 17:01:34.950: W/System.err(561): 	at android.os.Handler.dispatchMessage(Handler.java:92)
09-21 17:01:34.950: W/System.err(561): 	at android.os.Looper.loop(Looper.java:137)
09-21 17:01:34.970: W/System.err(561): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
09-21 17:01:34.970: W/System.err(561): 	at java.lang.reflect.Method.invokeNative(Native Method)
09-21 17:01:34.970: W/System.err(561): 	at java.lang.reflect.Method.invoke(Method.java:511)
09-21 17:01:34.970: W/System.err(561): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-21 17:01:34.970: W/System.err(561): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-21 17:01:34.970: W/System.err(561): 	at dalvik.system.NativeStart.main(Native Method)

Re: Подключение из Android к MS SQL 2008

Добавлено: 21 сен 2013, 20:28
rezak90
судя по всему не подцепился драйвер... ну здесь нужно звать тётю Инну!

Re: Подключение из Android к MS SQL 2008

Добавлено: 21 сен 2013, 20:33
MeAnAl
а это кто ? и как ее позвать, может ритуал особенный какой-то :)

Re: Подключение из Android к MS SQL 2008

Добавлено: 21 сен 2013, 20:51
rezak90
обычно под вечер она появляется, но если постараться и думать всё время о база данных то она придёт поскорее =)

Re: Подключение из Android к MS SQL 2008

Добавлено: 21 сен 2013, 23:57
mozilalvfg
Посмотрите здесь Использование JDBC в Java и mssql + android

Re: Подключение из Android к MS SQL 2008

Добавлено: 22 сен 2013, 00:26
Foenix
rezak90 писал(а):может вся проблема в том что в адресе localhost? сервер то не на телефоне находится))
Слава, "не стыдно"? :o
1. Запуск при обращении к серверу из UI потока.
2 - N Смотри мои месседжи на форуме. Тут уже 100500 раз это обсуждалось, я по буквам все расписывала. Буквально пару дней назад писала про секрет с localhost и так далее.
И подумай, прежде чем делать такое подключение - а оно тебе надо? "а дядя Слава против!!!" (С).

Re: Подключение из Android к MS SQL 2008

Добавлено: 22 сен 2013, 00:42
rezak90
я ж говорил если её позвать то она придёт :D
Foenix писал(а):
rezak90 писал(а):может вся проблема в том что в адресе localhost? сервер то не на телефоне находится))
Слава, "не стыдно"? :o
нет
Foenix писал(а):И подумай, прежде чем делать такое подключение - а оно тебе надо? "а дядя Слава против!!!" (С).
я решил что уже не буду на такое обращать внимание, сил уже нету на такое.

Re: Подключение из Android к MS SQL 2008

Добавлено: 22 сен 2013, 01:02
Foenix
Ну ты своего добился. Я-то вот была уверена, что МНЕ это надо, но я теперь не уверена, что это надо всем остальным. Я ж не могу за них решать..

Re: Подключение из Android к MS SQL 2008

Добавлено: 23 сен 2013, 16:39
MeAnAl
Всем спасибо за помощь. Проблема решена!

Мои ошибки:
1.

Код: Выделить всё

String url = "jdbc:sqlserver://SERVERNAME:1433;DatabaseName=master";[code]
[/code]
а надо

Код: Выделить всё

String url = "jdbc:jtds:sqlserver://SERVERNAME:1433/master";
2. Подключение организовать в отдельном потоке!!!

С уважением, MeAnAl / Андрей.