Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.97
Walleee
1 / 1 / 0
Регистрация: 28.04.2012
Сообщений: 57
#1

mssql + android - Программирование Android

15.01.2013, 19:23. Просмотров 4321. Ответов 29
Метки нет (Все метки)

Подскажите, пожалуйста, как подключить mssql к android?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2013, 19:23     mssql + android
Посмотрите здесь:

Android и С++ - Программирование Android
Всем привет! Понимаю, что подобная тема скорее всего поднималась, но шерстить 43 страницы данного раздела меня не радует, да и в поиск не...

Android с 0 - Программирование Android
Всем привет. Когда-то давно начинал изучать Андроид не зная Java(за что, конечно, поплатился), и сейчас решил вновь заняться разработкой...

С++ и android - Программирование Android
Привет форумчане, такая ситуация. Мой друг изучил доволи неплохо с++ , и вот натрапил на разработку под андроид и стоит перед вопросом,...

Android - Программирование Android
Пишу программу первый раз(HelloWorld). Программа написана без ошибок, но Android SDK не отображает ее. Сам SDK включается но написанная...

Android.mk - Программирование Android
Здравствуйте.Как скомпилировать стандартное приложение Android из исходников имея на руках только: Android.mk проекта, NDK, SDK(с...

Android L - Программирование Android
Привет всем дорогие друзья. Меня вот что интересует. Знаю что достаточно времени назад вышел L для разработчиков. Гайды по оформлению и...

Hello android - Программирование Android
Пишу, значит, вот это: package lucky.myfirstandroidapplication; import android.os.Bundle; import android.app.Activity; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
21.01.2013, 09:13     mssql + android #16
Я посмотрю. Но дальше без отдельного потока у тебя ничего не выйдет.
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
21.01.2013, 10:16     mssql + android #17
Посмотрела, так и не поняла в чем дело
заменила, короче, я твою библиотеку на свою версию jtds-1.2.6.jar и все заработало. Честно говоря, с третьей нету времени разбираться в чем дело, если хочешь покопаться и получится - напиши потом. А так - с моей работает, если хочешь подставь ее.
Затем поток делай отдельный. Т.к. дальше у тебя не пойдет без него. Потом соединяйся уже с БД.
Вложения
Тип файла: zip jtds-1.2.6.zip (285.0 Кб, 31 просмотров)
Walleee
1 / 1 / 0
Регистрация: 28.04.2012
Сообщений: 57
21.01.2013, 10:20  [ТС]     mssql + android #18
заменил jtds на sqljdbc. подключился нормально. странно..
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
21.01.2013, 10:21     mssql + android #19
лучше оставть jtdc, а то потом проблемы другие будут. Этот драйвер нормально работает.
Walleee
1 / 1 / 0
Регистрация: 28.04.2012
Сообщений: 57
21.01.2013, 10:22  [ТС]     mssql + android #20
ты скинула версию jtds-1.2.6 я jtds-1.3.0 качал может он ещё сырой
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
21.01.2013, 10:26     mssql + android #21
ну, а я тебе о чем?

Добавлено через 2 минуты
вот тут вот http://stackoverflow.com/questions/1...ver-on-android народ задает аналогичный вопрос еще в сентябре, и тоже что-то с версией (в комментариях). Ну если с сентября не поправили, может там какое-то подключение должно быть иное, не знаю. Че оно его не находит-то..
Walleee
1 / 1 / 0
Регистрация: 28.04.2012
Сообщений: 57
21.01.2013, 11:51  [ТС]     mssql + android #22
вывел подключение в отдельный поток. ругается(

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package com.example.hh;
 
import java.sql.Connection;
import java.sql.DriverManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    TextView tvInfo; 
    MyTask ts;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvInfo = (TextView)findViewById(R.id.textView1);
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
        } 
        catch (ClassNotFoundException e) {
            e.printStackTrace();            
        }   
           
        ts = new MyTask();
        ts.execute();
    }
    
      class MyTask extends AsyncTask<Void, Void, Void> {
 
            @Override
            protected void onPreExecute() {
              super.onPreExecute();
              tvInfo.setText("start connection");
            }
 
            @Override
            protected Void doInBackground(Void... params) {             
                  Connection conn = null;
                  String url = "jdbc:jtds:sqlserver://127.0.0.1:12701/dbName";
                  String name = "user";
                  String password = "password";
                  try 
                  {
                   conn = DriverManager.getConnection(url, name, password);
                   //Toast.makeText(getApplicationContext(), "есть подключение к БД", Toast.LENGTH_SHORT).show();
                   tvInfo.setText("есть подключение к БД");
                  } 
                  catch (java.sql.SQLException e) 
                  {
                   e.printStackTrace();
                   //Toast.makeText(getApplicationContext(), "ошибка подключения к БД", Toast.LENGTH_SHORT).show();
                   tvInfo.setText("ошибка подключения к БД");     
                  }     
              return null;
            }
 
            @Override
            protected void onPostExecute(Void result) {
              super.onPostExecute(result);
              tvInfo.setText("end connection");
            }
          }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
logcat пишет
----------------------------------------------------------------------------
01-21 07:40:51.621: E/AndroidRuntime(814): FATAL EXCEPTION: AsyncTask #1
01-21 07:40:51.621: E/AndroidRuntime(814): java.lang.RuntimeException: An error occured while executing doInBackground()
01-21 07:40:51.621: E/AndroidRuntime(814): at android.os.AsyncTask$3.done(AsyncTask.java:299)
01-21 07:40:51.621: E/AndroidRuntime(814): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
01-21 07:40:51.621: E/AndroidRuntime(814): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
01-21 07:40:51.621: E/AndroidRuntime(814): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
01-21 07:40:51.621: E/AndroidRuntime(814): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-21 07:40:51.621: E/AndroidRuntime(814): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-21 07:40:51.621: E/AndroidRuntime(814): at java.lang.Thread.run(Thread.java:856)
01-21 07:40:51.621: E/AndroidRuntime(814): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
01-21 07:40:51.621: E/AndroidRuntime(814): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4746)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:823)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.view.View.requestLayout(View.java:15468)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.view.View.requestLayout(View.java:15468)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.view.View.requestLayout(View.java:15468)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.view.View.requestLayout(View.java:15468)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:318)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.view.View.requestLayout(View.java:15468)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.widget.TextView.checkForRelayout(TextView.java:6313)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.widget.TextView.setText(TextView.java:3567)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.widget.TextView.setText(TextView.java:3425)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.widget.TextView.setText(TextView.java:3400)
01-21 07:40:51.621: E/AndroidRuntime(814): at com.example.hh.MainActivity$MyTask.doInBackground(MainActivity.java:57)
01-21 07:40:51.621: E/AndroidRuntime(814): at com.example.hh.MainActivity$MyTask.doInBackground(MainActivity.java:1)
01-21 07:40:51.621: E/AndroidRuntime(814): at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-21 07:40:51.621: E/AndroidRuntime(814): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-21 07:40:51.621: E/AndroidRuntime(814): ... 4 more
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
21.01.2013, 14:16     mssql + android #23
Цитата Сообщение от Walleee Посмотреть сообщение
.setText
только в UI потоке
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
21.01.2013, 16:29     mssql + android #24
Я с asyntask не работала, у меня обычные потоки, но из них нельзя обращаться к интерфейсу пользователя (в том-то и суть!). Если делать из потока обычного - нужно передавать из него сообщения в виде Handler.
Убери пока вообще все не относящееся к подключению и проверь соединяется ли вообще!
Ты с эмулятора хочешь подключиться, или с устройства? На чем тестируешь?
Walleee
1 / 1 / 0
Регистрация: 28.04.2012
Сообщений: 57
22.01.2013, 11:54  [ТС]     mssql + android #25
убрал onPreExecute() и onPostExecute(Void result) оставил только doInBackground(Void... params) результат тот же, хотя если верить примерам, то он должен был и с ними работать.
тестирую на эмуляторе, если бы я на устройстве тестировал, то я бы наверно уже повесился)

Добавлено через 40 минут
соединение есть )
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        Thread t = new Thread(new Runnable() {
            public void run() {
              try {
                  Connection conn = null;
                  String url = "jdbc:jtds:sqlserver://127.0.0.1:12701/dbName";
                  String name = "userName";
                  String password = "userPassword";
                  try 
                  {
                   conn = DriverManager.getConnection(url, name, password);
                   //Toast.makeText(getApplicationContext(), "есть подключение к БД", Toast.LENGTH_SHORT).show();
                   Log.d(LOG_TAG, "good!");
                  } 
                  catch (java.sql.SQLException e) 
                  {
                   e.printStackTrace();
                   Toast.makeText(getApplicationContext(), "ошибка подключения к БД", Toast.LENGTH_SHORT).show();
                   Log.d(LOG_TAG, "bad");
                  } 
              } catch (Exception e) {
                e.printStackTrace();
              }
            }
          });
          t.start();
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.01.2013, 15:03     mssql + android #26
опять же, тосты с не UI потока.

Добавлено через 2 минуты
уберите тосты и покажите стек трейс SQLException.
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
22.01.2013, 15:58     mssql + android #27
я тоже не поняла - все получилось или нет?
Тосты тоже нельзя. Чтоб информацию передать нужно использовать Handler-ы
Walleee
1 / 1 / 0
Регистрация: 28.04.2012
Сообщений: 57
23.01.2013, 12:13  [ТС]     mssql + android #28
да соединяется сейчас. тост не сработал потому что в catch попал(забыл убрать).

Добавлено через 16 часов 36 минут
а обращаться к данным я должен в этом же потоке?
простенький запрос выполняю опять ошибок кучу выводит.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
        Thread t = new Thread(new Runnable() {
            public void run() {
              try {
                  Connection conn = null;
                  String url = "jdbc:jtds:sqlserver://127.0.0.1:12701/dbName";
                  String name = "userName";
                  String password = "userPassword";
                  try 
                  {
                   conn = DriverManager.getConnection(url, name, password);
                   Log.d(LOG_TAG, "good!");
                   
                   Statement st = conn.createStatement();
                   String query = "select * from tb where (id = 1)";
                   try
                   {
                   ResultSet rs = st.executeQuery(query);
                   Log.d(LOG_TAG, "very good!");
                   
                        try
                        {
                            //Log.d(LOG_TAG, rs.getString("GroupNo"));  
                            String str1; 
                            str1 = rs.getString("GN");
                        }
                        catch(Exception e) { Log.d(LOG_TAG, "very bad2!"); }           
                   }
                   catch(Exception e){ Log.d(LOG_TAG, "very bad!"); }
                  } 
                  catch (java.sql.SQLException e) 
                  {
                      e.printStackTrace();
                      Log.d(LOG_TAG, "bad");
                  } 
              } 
              catch (Exception e) {
                e.printStackTrace();
              }
            }
          });
          t.start();
logcat пишет
-------------------------------
01-23 08:00:35.789: E/ActivityThread(628): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d538e8 that was originally bound here
01-23 08:00:35.789: E/ActivityThread(628): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d538e8 that was originally bound here
01-23 08:00:35.789: E/ActivityThread(628): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-23 08:00:35.789: E/ActivityThread(628): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-23 08:00:35.789: E/ActivityThread(628): at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-23 08:00:35.789: E/ActivityThread(628): at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-23 08:00:35.789: E/ActivityThread(628): at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-23 08:00:35.789: E/ActivityThread(628): at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-23 08:00:35.789: E/ActivityThread(628): at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-23 08:00:35.789: E/ActivityThread(628): at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
01-23 08:00:35.789: E/ActivityThread(628): at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
01-23 08:00:35.789: E/ActivityThread(628): at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-23 08:00:35.789: E/ActivityThread(628): at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-23 08:00:35.789: E/ActivityThread(628): at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-23 08:00:35.789: E/ActivityThread(628): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-23 08:00:35.789: E/ActivityThread(628): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-23 08:00:35.789: E/ActivityThread(628): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-23 08:00:35.789: E/ActivityThread(628): at java.lang.Thread.run(Thread.java:856)
01-23 08:00:35.930: E/StrictMode(628): null
01-23 08:00:35.930: E/StrictMode(628): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@40d538e8 that was originally bound here
01-23 08:00:35.930: E/StrictMode(628): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:969)
01-23 08:00:35.930: E/StrictMode(628): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:863)
01-23 08:00:35.930: E/StrictMode(628): at android.app.ContextImpl.bindService(ContextImpl.java:1418)
01-23 08:00:35.930: E/StrictMode(628): at android.app.ContextImpl.bindService(ContextImpl.java:1407)
01-23 08:00:35.930: E/StrictMode(628): at android.content.ContextWrapper.bindService(ContextWrapper.java:473)
01-23 08:00:35.930: E/StrictMode(628): at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:157)
01-23 08:00:35.930: E/StrictMode(628): at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:145)
01-23 08:00:35.930: E/StrictMode(628): at com.android.emailcommon.service.ServiceProxy.test(ServiceProxy.java:191)
01-23 08:00:35.930: E/StrictMode(628): at com.android.exchange.ExchangeService$7.run(ExchangeService.java:1850)
01-23 08:00:35.930: E/StrictMode(628): at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:551)
01-23 08:00:35.930: E/StrictMode(628): at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:549)
01-23 08:00:35.930: E/StrictMode(628): at android.os.AsyncTask$2.call(AsyncTask.java:287)
01-23 08:00:35.930: E/StrictMode(628): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
01-23 08:00:35.930: E/StrictMode(628): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
01-23 08:00:35.930: E/StrictMode(628): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
01-23 08:00:35.930: E/StrictMode(628): at java.lang.Thread.run(Thread.java:856)
----------------------------------
лог выводит "very bad2!"
то есть ошибка тут
Java
1
str1 = rs.getString("GN");
хотя запрос корректный
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
23.01.2013, 15:01     mssql + android #29
не нужно это в поток пихать уже. Получил переменную ResultSet, и выходи оттуда (ну, если хочешь)), и делай с ней потом что хочешь в любом месте программы.
Честно говоря не могу по логу (может быть ты не все прихватил) сообразить где ошибка, ищи среди этих строчек ошибок указание на твою программу, щелкаешь по ней два раза - и в редакторе тебе подсветит строчку, где произошла ошибка. Только если будет вложенный вызов - одной процедуры из другой, то будет допустим там две строчки с указанием конечной ошибки (сверху), и строчки во внешней процедуре, из которой была вызвана процедура с ошибкой (чуть ниже).

А правильно обрщаться к строчкам резалтсета примерно так
Java
1
2
3
while (rs.next()) {
                тут что-то делаешь с rs.getString("name")
            }

Потому что не понятно где у твоего сета находится текущая запись.

либо просто переходи перед вызовом rs.getString на первую запись резалтсета.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2013, 19:28     mssql + android
Еще ссылки по теме:

Qt 5.1.1 for Android - Программирование Android
Здравствуйте! Пытаюсь, использовать библиотеку Qt для Android, установил всё по инструкции на сайте: Android SDK, NDK, JM, Ant, ну, и сам...

Android - Программирование Android
пишу приложение на андроид (не давно начал изучать) как сделать в андроид приложении 1+2=? при нажатии на imagebutton(1.2.3) чтоб вместо...

C# and Android - Программирование Android
Здравствуйте. Появилась задача - разработать приложение на шарпе под андроид. Хотелось бы узнать опыт коллег, которые делали подобное. ...

Android - Программирование Android
Всем доброго времени суток! Есть вопрос! Код приложения который написан на эклипсе например игра! Если этот код использовать в Андроид...

Android.support.v7 - Программирование Android
Народ, помогите пожалуйста. Интелиж не видит android.support.v7.app.ActionBarActivity хотя в android sdk manager support скачан, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kris_1
5 / 5 / 0
Регистрация: 16.01.2013
Сообщений: 16
24.01.2013, 19:28     mssql + android #30
вот сегодня случайно наткнулась на пример, там все это есть
http://www.quizful.net/post/using-jdbc
Yandex
Объявления
24.01.2013, 19:28     mssql + android
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru