Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 19 апр 2013, 15:50

Пишите, пожалуйста, сюда. Будем друг другу помогать.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 19 апр 2013, 16:00

инфа по теме тут viewtopic.php?f=39&t=1865
и тут viewtopic.php?f=3&t=124 тоже немного есть.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Opaaa
Сообщения: 8
Зарегистрирован: 15 апр 2013, 07:08

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Opaaa » 19 апр 2013, 16:41

Скорей всего у меня руки кривые, но он вываливается в эксепшн на Class.forName("net.sourceforge.jtds.driver");
Вот и не пойму, правильно ли я jtds прикрутил...О_о

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 19 апр 2013, 16:43

все нужно прикладывать - коды, логи
руки у всех нормальные :)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Opaaa
Сообщения: 8
Зарегистрирован: 15 апр 2013, 07:08

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Opaaa » 19 апр 2013, 16:53

какой код?)))один трай и в нем класс постом выше
  • Код: Выделить всё

    04-19 13:49:25.102: W/System.err(345): java.lang.ClassNotFoundException: net.sourceforge.jtds.driver
    04-19 13:49:25.112: W/System.err(345): 	at java.lang.Class.classForName(Native Method)
    04-19 13:49:25.112: W/System.err(345): 	at java.lang.Class.forName(Class.java:234)
    04-19 13:49:25.112: W/System.err(345): 	at java.lang.Class.forName(Class.java:181)
    04-19 13:49:25.112: W/System.err(345): 	at ru.example.east.MainActivity.onCreate(MainActivity.java:63)
    04-19 13:49:25.112: W/System.err(345): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    04-19 13:49:25.112: W/System.err(345): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    04-19 13:49:25.112: W/System.err(345): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    04-19 13:49:25.112: W/System.err(345): 	at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    04-19 13:49:25.112: W/System.err(345): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    04-19 13:49:25.112: W/System.err(345): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    04-19 13:49:25.112: W/System.err(345): 	at android.os.Looper.loop(Looper.java:123)
    04-19 13:49:25.122: W/System.err(345): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
    04-19 13:49:25.122: W/System.err(345): 	at java.lang.reflect.Method.invokeNative(Native Method)
    04-19 13:49:25.122: W/System.err(345): 	at java.lang.reflect.Method.invoke(Method.java:507)
    04-19 13:49:25.122: W/System.err(345): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    04-19 13:49:25.122: W/System.err(345): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    04-19 13:49:25.122: W/System.err(345): 	at dalvik.system.NativeStart.main(Native Method)
    04-19 13:49:25.122: W/System.err(345): Caused by: java.lang.NoClassDefFoundError: net.sourceforge.jtds.driver
    04-19 13:49:25.132: W/System.err(345): 	... 17 more
    04-19 13:49:25.132: W/System.err(345): Caused by: java.lang.ClassNotFoundException: net.sourceforge.jtds.driver in loader dalvik.system.PathClassLoader[/data/app/ru.example.east-2.apk]
    04-19 13:49:25.132: W/System.err(345): 	at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
    04-19 13:49:25.132: W/System.err(345): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
    04-19 13:49:25.132: W/System.err(345): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    04-19 13:49:25.132: W/System.err(345): 	... 17 more
    

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 19 апр 2013, 16:55

класс не найден, значит что-то не так установлено. Почитай инструкцию куда устанавливать и что..

код нужен для вопросов все равно. У тебя в потоке это все, кстати.
почитай дискуссию по ссылкам.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 19 апр 2013, 17:39

R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Andy Jr
Сообщения: 2
Зарегистрирован: 19 фев 2013, 08:20

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Andy Jr » 25 апр 2013, 11:31

Проблема при подключении к базе!
Код:

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

package ru.test.mysqltest;

import java.sql.*;
import java.sql.Connection;
import java.sql.SQLException;

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


public class MainActivity extends Activity implements OnClickListener {
	
	Button input, base;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        input = (Button) findViewById(R.id.btncon);
        input.setOnClickListener(this);
        
        base = (Button) findViewById(R.id.btnbase);
        base.setOnClickListener(this);
         
    }

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

    
    @Override
	public void onClick(View v) {
		switch (v.getId()) {
        case R.id.btncon:
            connect();
            break;
        case R.id.btnbase:
        	connectbase();
        	break;
        default:
        	break;
        }
	}
    
    
    void connect() {
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
			Log.d("My logs", "Подключили драйвер!");
		}
		catch (InstantiationException e) {
		  Log.d("My logs", "Не подключили драйвер!");
		  e.printStackTrace();
		} 
    }	
    
    void connectbase() {
		Connection conn = null;
		try {
                        conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://172.16.64.111:1433","user","123");
			Log.d("My logs", "Подключилось!");
		}
		catch (SQLException e) {
			e.printStackTrace();
		}
		try {
	        conn.close();
	    } 
		catch (SQLException e) {
	        e.printStackTrace();
	    }

    } 
    				
}
Ошибки в логе:

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

04-25 07:41:51.736: WARN/System.err(315): java.sql.SQLException: No suitable driver
04-25 07:41:51.756: WARN/System.err(315):     at java.sql.DriverManager.getConnection(DriverManager.java:187)
04-25 07:41:51.756: WARN/System.err(315):     at java.sql.DriverManager.getConnection(DriverManager.java:214)
04-25 07:41:51.756: WARN/System.err(315):     at ru.test.mysqltest.MainActivity.connectbase(MainActivity.java:80)
04-25 07:41:51.756: WARN/System.err(315):     at ru.test.mysqltest.MainActivity.onClick(MainActivity.java:48)
04-25 07:41:51.756: WARN/System.err(315):     at android.view.View.performClick(View.java:2485)
04-25 07:41:51.756: WARN/System.err(315):     at android.view.View$PerformClick.run(View.java:9080)
04-25 07:41:51.756: WARN/System.err(315):     at android.os.Handler.handleCallback(Handler.java:587)
04-25 07:41:51.756: WARN/System.err(315):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-25 07:41:51.756: WARN/System.err(315):     at android.os.Looper.loop(Looper.java:123)
04-25 07:41:51.756: WARN/System.err(315):     at android.app.ActivityThread.main(ActivityThread.java:3683)
04-25 07:41:51.756: WARN/System.err(315):     at java.lang.reflect.Method.invokeNative(Native Method)
04-25 07:41:51.766: WARN/System.err(315):     at java.lang.reflect.Method.invoke(Method.java:507)
04-25 07:41:51.766: WARN/System.err(315):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-25 07:41:51.766: WARN/System.err(315):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-25 07:41:51.766: WARN/System.err(315):     at dalvik.system.NativeStart.main(Native Method)
04-25 07:41:51.766: DEBUG/AndroidRuntime(315): Shutting down VM
04-25 07:41:51.766: WARN/dalvikvm(315): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-25 07:41:51.776: ERROR/AndroidRuntime(315): FATAL EXCEPTION: main
04-25 07:41:51.776: ERROR/AndroidRuntime(315): java.lang.NullPointerException
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at ru.test.mysqltest.MainActivity.connectbase(MainActivity.java:88)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at ru.test.mysqltest.MainActivity.onClick(MainActivity.java:48)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at android.view.View.performClick(View.java:2485)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at android.view.View$PerformClick.run(View.java:9080)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at android.os.Handler.handleCallback(Handler.java:587)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at android.os.Looper.loop(Looper.java:123)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at android.app.ActivityThread.main(ActivityThread.java:3683)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at java.lang.reflect.Method.invokeNative(Native Method)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at java.lang.reflect.Method.invoke(Method.java:507)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-25 07:41:51.776: ERROR/AndroidRuntime(315):     at dalvik.system.NativeStart.main(Native Method)
04-25 07:41:51.796: WARN/ActivityManager(61):   Force finishing activity ru.test.mysqltest/.MainActivity
04-25 07:41:52.307: WARN/ActivityManager(61): Activity pause timeout for HistoryRecord{4069fd78 ru.test.mysqltest/.MainActivity}
04-25 07:41:54.186: INFO/Process(315): Sending signal. PID: 315 SIG: 9
04-25 07:41:54.219: INFO/ActivityManager(61): Process ru.test.mysqltest (pid 315) has died.
04-25 07:41:54.219: ERROR/InputDispatcher(61): channel '40683f40 ru.test.mysqltest/ru.test.mysqltest.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
04-25 07:41:54.219: ERROR/InputDispatcher(61): channel '40683f40 ru.test.mysqltest/ru.test.mysqltest.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
04-25 07:41:54.256: INFO/WindowManager(61): WIN DEATH: Window{40683f40 ru.test.mysqltest/ru.test.mysqltest.MainActivity paused=false}
04-25 07:41:54.276: WARN/InputManagerService(61): Got RemoteException sending setActive(false) notification to pid 315 uid 10005
04-25 07:42:03.346: WARN/ActivityManager(61): Activity destroy timeout for HistoryRecord{4069fd78 ru.test.mysqltest/.MainActivity}
Драйвер sqljdbc4.jar подключился нормально, ошибки не быдал!

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 25 апр 2013, 11:36

вот тут я скидывала драйвер, с которым работаю
viewtopic.php?f=39&t=1865&start=20#p11350
и у тебя странная строка подключения, у меня такая:

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

 "jdbc:jtds:sqlserver://" + sServerName + "/" + sDBName;
И почитай темы , которые я указала - там много что написано. У тебя, я не вижу отдельного потока, например.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 25 апр 2013, 11:39

никаких onClick не должно быть!
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Andy Jr
Сообщения: 2
Зарегистрирован: 19 фев 2013, 08:20

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Andy Jr » 25 апр 2013, 11:42

В потоке вообще какие то странные ошибки вываливаються, и что подразумеваеться под предложением не использовать onClick?
Какая строка для подключения твоего драйвера?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 25 апр 2013, 11:47

с тем, что по клику у тебя все равно соединиться с сервером не получится. Только из потока.
Раз ошибки вываливаются - разберись с потоками до конца, никуда не денешся.
Если будешь использовать asinktask - я тут не помощник, я использую обычный thread, разбираться с другим некогда просто.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Vovich » 30 май 2013, 17:20

Подключаюсь к теме.
Скачал и поставил еще и jtds. Надеюсь что правильно. Такой вопрос: как правильно вызывать соединение, если по клику нельзя. И еще, мож где есть полноценный пример подключения через net.sourceforge.jtds.jdbc.Driver к MS SQL2005.
И еще - как убедиться что проблема в коде (error connection), а не в сервере? Какой-то посторонней утилиткой проверить?
Спасибо.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 30 май 2013, 17:52

1. Как нельзя по клику? можно хоть по клику, хоть как угодно, но не соединиться прям сразу, а запустить поток, а в нем - уже соединение. ЭТО ВСЕ ЕСТЬ В ТЕМЕ.
2. Не дам пример подключения - есть все в темах, давалось неоднократно мной и другими. А то скопируешь и не поймешь
3. Все смотри в логах. Я уже писала что нужно для соединения. ПОтихоньку начинай делать.
Задавала вопросы другим - если на эмуляторе одно, На устройстве - другое..
А насчет запросов и ответов сервера - смотри Profiler, там есть что серверу идет, идет ил вообще, что он отвечает. ТАк же это есть и в логах.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Vovich » 31 май 2013, 11:26

Запустил в отдельном потоке,
  • 05-31 11:20:25.500: I/Android(8414): MySQL Connect Example.
    05-31 11:20:25.501: W/Error my connection(8414): net.sourceforge.jtds.jdbc.Driver
    05-31 11:20:25.519: I/AppLaunch(96): DisplayHardware::flip, eglSwapBuffers ...
упростил что можно, ошибка осталась

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

	public void query2()
	{
	Log.i("Android"," MySQL Connect Example.");
	Connection conn = null;
	try {
	String driver = "net.sourceforge.jtds.jdbc.Driver";
	Class.forName(driver).newInstance();

	Log.i("myAndroid"," class_for_name");
	
/*	String connString = "jdbc:jtds:sqlserver://localhost:1433/Vova1;encrypt=fasle;instance=SQLEXPRESS;";
	String username = "";
	String password = "";
	conn = DriverManager.getConnection(connString,username,password);
	Log.w("Connection","open");
	Statement stmt = conn.createStatement();
	ResultSet reset = stmt.executeQuery("select * from myTable");
	 
	//Print the data to the console
		while(reset.next()){
			Log.w("Data:",reset.getString(1));
		}
		conn.close();*/
			} 
		catch (Exception e)	{
			Log.w("Error my connection","" + e.getMessage());
		}
	}	
Похоже затык в Class.forName(driver).newInstance();
и jdbc4 и jtds-1.2.6 (отсюда) добавлял через proekt-propetries ... как тут расписано

:(

я холодный...

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Vovich » 31 май 2013, 13:50

Закинул в \libs jtds и sqljdbc4
с эмулятора законнектился.
По USB с реального планшета не хочет. Мучаю строку подключения.

:)
Вроде дело сдвинулось.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 31 май 2013, 14:22

а что это вообще такое sqljdbc4? Драйвер микрософта, тчо ли? тебе он вообще зачем, можно спросить?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Vovich » 31 май 2013, 14:33

От вчера остался, когда через jdbc пробовал
Думал, раз в строке драйвера есть, то нужно. Ща выкину, попробую - доложусь.
Попутно вопрос: а можно сразу с внешнего SQL сервера в локальную SQLite базу данные загружать. Или сначала селектом выбирать, а потом построчно записывать (и аналогично - с локальной на сервер).

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Foenix » 31 май 2013, 14:38

низя сразу, все построчно. Транзакции используй, так намного быстрее.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Vovich
Сообщения: 30
Зарегистрирован: 30 май 2013, 15:03

Re: Подключение к БД через net.sourceforge.jtds.jdbc.Driver

Сообщение Vovich » 31 май 2013, 14:49

ну построчно, так построчно...
Вобщем jdbc лишнее.

Ответить