Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 21 окт 2018, 04:33

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: MS SQL 2008r2 jtds
СообщениеДобавлено: 12 июл 2016, 23:07 

Зарегистрирован: 17 апр 2016, 15:48
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Друзья мои!!! Нужна помощь! Весь инет перерыл - не могу ответа найти. Но чувствую, что где-то все рядом и очень просто...
Проблема такая:
использую jtds-1.2.7.jar (версии от 1.2.5 до 1.2.8) для подключения к MS SQL 2008r2 и вроде бы все нормально до определенного времени подключалось и читал все, что мне нужно, но при добавлении в gradle dependencies какой-нибудь библиотеки (как практика показала - любой), при подключении к БД выдает исключение
java.sql.SQLException: The executeQuery method must return a result set.
И это именно не при выполнении запроса (запрос вообще убираю), а при
Connection conn = DriverManager.getConnection(MyApplication.db_url, MyApplication.db_name, MyApplication.db_password ); !!!

А после и добавления класса отдельно такую же фигню выдавать начал...

Вот код:

Код: [ Загрузить ] [ Скрыть ]
  1.   class login extends AsyncTask<String, String, Integer> { 
  2.         Integer mysession=0; 
  3.         @Override 
  4.         protected void onPostExecute(Integer i) { 
  5.             Log.d("zxc","Запоминаю настройки"); 
  6.             super.onPostExecute(i); 
  7.         } 
  8.         @Override 
  9.         protected void onPreExecute() { 
  10.             login_try++;//увеличиваем попытку на единицу 
  11.             super.onPreExecute(); 
  12.         } 
  13.         @Override 
  14.         protected Integer doInBackground(String... params) { 
  15.             MyApplication.MY_IP=MyApplication.getLocalIpAddress(); 
  16.             try { 
  17.                 Connection conn = null; 
  18.                 try 
  19.                 { 
  20.                      Class.forName("net.sourceforge.jtds.jdbc.Driver"); //.newInstance(); 
  21.                     //DriverManager.registerDriver(new net.sourceforge.jtds.jdbc.Driver()); 
  22.  
  23.                     Log.d("zxc", "MSSQL класс подключен"); 
  24.                     //DriverManager.registerDriver(new net.sourceforge.jtds.jdbc.Driver()); 
  25.                     Log.d("zxc", "MSSQL драйвер подключен"); 
  26.                     conn = DriverManager.getConnection(MyApplication.db_url, MyApplication.db_name, MyApplication.db_password  ); 
  27.  
  28.                     // DriverManager.getConnection(); 
  29.  
  30.                     Statement st = conn.createStatement(); 
  31.                     Log.d("zxc", "good!"); 
  32.                     String query = "DECLARE @code int,@code_name varchar(150),@id_session int,@Questions_xml xml, @JK_array xml, @My_info xml, @My_avatar nvarchar(max)" + 
  33.                             " EXEC    [DS_CRM].[dbo].[Autorization_Revizor]    @Login = N'" + MyApplication.MY_LOGIN + "', @Password = N'"+ MyApplication.MY_PASSWORD +"', @id_value_enter = 1, @IP = N'" + MyApplication.MY_IP +  "', @Useragent = N'" + MyApplication.SOFTWAREVERSION + "', @Comment = N'IMEI:" + MyApplication.MYIMEI +  "', @code = @code OUTPUT, @code_name = @code_name OUTPUT, @id_session = @id_session OUTPUT, @Questions_xml = @Questions_xml OUTPUT, @My_info = @My_info OUTPUT, @JK_array = @JK_array OUTPUT, @My_avatar=@My_avatar OUTPUT " + 
  34.                             " SELECT    @code as N'code',@code_name as N'code_name', @id_session as N'id_session', @Questions_xml as N'Questions_xml', @My_info as N'My_info',   @JK_array as N'JK_array',   @My_avatar as N'My_avatar'"; 
  35.  
  36.                  
  37.                 catch (java.sql.SQLException e)   {    e.printStackTrace(); 
  38.                     Log.d("zxc", "bad=" + e.toString()); resultcode="Не смог подключиться к БД"; } //вот сюда отправляет все время 
  39.             } 
  40.             catch (Exception e) {   e.printStackTrace();  resultcode="Не смог выполнить функцию запроса";  } 
  41.             return mysession; 
  42.         } 
  43.     } 
  44.  



Код: [ Загрузить ] [ Скрыть ]
  1.  
  2. 2 19:50:36.802 27346-27427/ru.ds_exp.test_07042016_02 D/zxc: MSSQL класс подключен 
  3. 07-12 19:50:36.802 27346-27427/ru.ds_exp.test_07042016_02 D/zxc: MSSQL драйвер подключен 
  4. 07-12 19:50:37.466 27346-27348/ru.ds_exp.test_07042016_02 D/dalvikvm: GC_CONCURRENT freed 698K, 15% free 10335K/12103K, paused 12ms+6ms, total 65ms 
  5. 07-12 19:50:37.474 27346-27427/ru.ds_exp.test_07042016_02 D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 44ms 
  6. 07-12 19:50:37.726 27346-27348/ru.ds_exp.test_07042016_02 D/dalvikvm: GC_CONCURRENT freed 819K, 15% free 10888K/12807K, paused 13ms+12ms, total 53ms 
  7. 07-12 19:50:38.154 56-56/? D/Genymotion: Received Ping 
  8. 07-12 19:50:39.410 27346-27427/ru.ds_exp.test_07042016_02 W/System.err: java.sql.SQLException: The executeQuery method must return a result set. 
  9. 07-12 19:50:39.410 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:517) 
  10. 07-12 19:50:39.430 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at net.sourceforge.jtds.jdbc.JtdsStatement.executeQuery(JtdsStatement.java:1433) 
  11. 07-12 19:50:39.430 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:401) 
  12. 07-12 19:50:39.434 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:188) 
  13. 07-12 19:50:39.438 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at java.sql.DriverManager.getConnection(DriverManager.java:175) 
  14. 07-12 19:50:39.438 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at java.sql.DriverManager.getConnection(DriverManager.java:209) 
  15. 07-12 19:50:39.450 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at ru.ds_exp.test_07042016_02.Screen_1$login.doInBackground(Screen_1.java:1075) 
  16. 07-12 19:50:39.450 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at ru.ds_exp.test_07042016_02.Screen_1$login.doInBackground(Screen_1.java:1047) 
  17. 07-12 19:50:39.454 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:287) 
  18. 07-12 19:50:39.454 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
  19. 07-12 19:50:39.474 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
  20. 07-12 19:50:39.474 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
  21. 07-12 19:50:39.490 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
  22. 07-12 19:50:39.494 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
  23. 07-12 19:50:39.494 27346-27427/ru.ds_exp.test_07042016_02 W/System.err:     at java.lang.Thread.run(Thread.java:856) 
  24. 07-12 19:50:39.498 27346-27427/ru.ds_exp.test_07042016_02 D/zxc: bad=java.sql.SQLException: The executeQuery method must return a result set. 
  25. 07-12 19:50:39.522 27346-27346/ru.ds_exp.test_07042016_02 D/zxc: Запоминаю настройки 
  26.  


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MS SQL 2008r2 jtds
СообщениеДобавлено: 13 июл 2016, 10:59 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
лучше не логи выводить, а пройтись дебаггером.

_________________
R.id.team

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MS SQL 2008r2 jtds
СообщениеДобавлено: 13 июл 2016, 14:58 

Зарегистрирован: 17 апр 2016, 15:48
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
несколько раз сделал rebuild, немного поправил activity.xml

перешел на jtds 1.2.1

и все заработало.... не знаю что именно повлияло, поэтому перечисли все манипуляции :)))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MS SQL 2008r2 jtds
СообщениеДобавлено: 13 июл 2016, 17:42 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
у меня 1.2.6 работала хорошо.

_________________
R.id.team

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MS SQL 2008r2 jtds
СообщениеДобавлено: 14 июл 2016, 18:24 

Зарегистрирован: 17 апр 2016, 15:48
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
добавил немного кода и опять просит result set вернуть при DriverManager.getConnection(MyApplication.db_url, MyApplication.db_name, MyApplication.db_password ); ...

может я изначально что-то не так делаю?
скачал библиотеку jtds-1.2.xx (скачал с пометкой dist), скачался архив, из архива беру 1 файл с названием jtds-1.2.xx.jar, положил его в папку app/libs (там у меня еще 2 библиотеки AndroidViewAnimations-1.1.3.jar и AndroidEasingFunctions-1.0.0.jar) и в build.gradle(module:app) добавил вот так:


dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
// commit hash
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'uk.co.chrisjenx:calligraphy:2.2.0'
compile 'com.google.android.gms:play-services-maps:8.4.0'
... и т.д.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MS SQL 2008r2 jtds
СообщениеДобавлено: 14 июл 2016, 18:43 

Зарегистрирован: 17 апр 2016, 15:48
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Запустил Wireshark и Profiler... надо было конечно сразу это сделать...
При BatchStarting делает запрос (получается при getconnection)
SELECT @@MAX_PRECISION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET IMPLICIT_TRANSACTIONS OFF
SET QUOTED_IDENTIFIER ON
SET TEXTSIZE 2147483647

Предполагаю, что первая строка Select что-то возвращает, а точнее количество знаков после запятой и их 38....
но нафига этот select при connection!?
и может еще что-то надо установить на SQL сервере, библиотеку какую-нибудь?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MS SQL 2008r2 jtds
СообщениеДобавлено: 14 июл 2016, 20:40 

Зарегистрирован: 17 апр 2016, 15:48
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
<kznm! Выяснил, что сервер на запрос, который идет при регистрации возвращает 0 строк

SELECT @@MAX_PRECISION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET IMPLICIT_TRANSACTIONS OFF
SET QUOTED_IDENTIFIER ON
SET TEXTSIZE 2147483647



при выполнении этого же запроса в SSMS возвращает 1 строку...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: MS SQL 2008r2 jtds
СообщениеДобавлено: 14 июл 2016, 20:58 

Зарегистрирован: 17 апр 2016, 15:48
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
нужно SELECT @@MAX_PRECISION заменить на SELECT TOP 1 @@MAX_PRECISION
в файле ConnectionJDBC2.java в строке 92 - должно помочь

но при выводе логов все строки как ссылки, а net.sourceforge.jtds.jdbc..... строки без ссылок, те кликнув на нее я никуда не попадаю...
подозреваю, что это как-то связано, что я готовую библиотеку использую...
Помогите с этим пожалуйста


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB