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

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

Войти
Регистрация
Восстановить пароль
 
Temoxa
9 / 9 / 1
Регистрация: 19.03.2010
Сообщений: 678
Записей в блоге: 2
Завершенные тесты: 1
#1

Connect to MS SQL и ошибка "unfortunately has stopped" - Программирование Android

17.04.2015, 16:06. Просмотров 695. Ответов 12
Метки нет (Все метки)

Привет! Ребята выручите пожалуйста. Скачал jtds, вроде прилинковал к проекту... в манифесте прописал доступ к инету

XML
1
2
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
вот код соединения
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void OnClick(View v) throws SQLException {
        Connection conn = null;
        ResultSet rs = null;
        String url = "jdbc:jtds:sqlserver://127.0.0.1:1433;instance=SQLEXPRESS;DatabaseName=Test";
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        String userName = "sa";
        String password = "test";
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, userName, password);
            System.out.println("Connected to the database!!! Getting table list...");
            DatabaseMetaData dbm = conn.getMetaData();
            rs = dbm.getTables(null, null, "%", new String[] { "TABLE" });
            while (rs.next()) {
                System.out.println(rs.getString("TABLE_NAME"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            conn.close();
            rs.close();
        }
    }
Запускаю в эмуляторе, выдает ерор "unfortunately has stopped"... В чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2015, 16:06     Connect to MS SQL и ошибка "unfortunately has stopped"
Посмотрите здесь:

Новая реализация findViewById и ошибка "Unfortunately, MyApp has been stopped" - Программирование Android
Здравствуйте, хотел немного сократить код программы, создав метод, который принимает на вход View и Integer //Сам метод public ...

Как отловить причину "unfortunately, application has stopped" на эмуляторе? - Программирование Android
Приветствую всех! Помогите разобраться. Пытаюсь убрать заголовок protected void onCreate(Bundle savedInstanceState) { ...

Как исправить ошибку "Unfortunately, <Program> has stopped"? - Программирование Android
Я только начал изучать программирование программ для Android и сразу же после создания приложения Hello World, при запуске приложения на...

Исправить ошибку "Unfortunately appname has stopped" - Программирование Android
Посоветуйте как можно обнаружить причину ошибки &quot;Unfortunatellya Battle has stoped&quot;, как ее исправить ??

"Unfortunately, testApp has stopped" - Программирование Android
package com.illya05_Studio.simplepasssecurity; import android.app.Activity; import android.content.SharedPreferences; import...

"The application Butt (process.com.samples.Butt) has stopped unexpectedly. Please try again" - Программирование Android
работаю на эклипс, программирую калькулятор для android. у меня есть 2 программы, 1 из них: package com.samples.But; import...

Ошибка "Description Resource Path Location Type" - Программирование Android
На еклипсе выдает такую ошибку Description Resource Path Location Type The container 'Android Dependencies' references non existing...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
17.04.2015, 16:11     Connect to MS SQL и ошибка "unfortunately has stopped" #2
Цитата Сообщение от Temoxa Посмотреть сообщение
В чем ошибка?
....в консоли
в консоли пишет в чем ошибка
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
17.04.2015, 16:12     Connect to MS SQL и ошибка "unfortunately has stopped" #3
Temoxa, вынесите данные манипуляции в отдельный поток.
нельзя такое делать в UI потоке.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
17.04.2015, 16:13     Connect to MS SQL и ошибка "unfortunately has stopped" #4
Цитата Сообщение от Temoxa Посмотреть сообщение
127.0.0.1
10.0.2.2

+ то, что написали androbro и Паблито
Temoxa
9 / 9 / 1
Регистрация: 19.03.2010
Сообщений: 678
Записей в блоге: 2
Завершенные тесты: 1
17.04.2015, 16:18  [ТС]     Connect to MS SQL и ошибка "unfortunately has stopped" #5
Нельзя с точки правильности проектирования приложения?)) если да, это отложим это пока.

Попробовал с 10.0.2.2, таже фигня...

Как правильно логи из консоли предоставить, тупо копи паст?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
17.04.2015, 16:20     Connect to MS SQL и ошибка "unfortunately has stopped" #6
Temoxa,
Цитата Сообщение от Temoxa Посмотреть сообщение
с точки правильности проектирования приложения?
с точки зрения политики безопасности androidначиная с API>11
Temoxa
9 / 9 / 1
Регистрация: 19.03.2010
Сообщений: 678
Записей в блоге: 2
Завершенные тесты: 1
17.04.2015, 16:49  [ТС]     Connect to MS SQL и ошибка "unfortunately has stopped" #7
Тогда пример как в потоке плз)
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
17.04.2015, 22:45     Connect to MS SQL и ошибка "unfortunately has stopped" #8
Temoxa, даже на русском можно найти по этому вопросу страницы, ищите по AsynkTask.
Temoxa
9 / 9 / 1
Регистрация: 19.03.2010
Сообщений: 678
Записей в блоге: 2
Завершенные тесты: 1
18.04.2015, 07:21  [ТС]     Connect to MS SQL и ошибка "unfortunately has stopped" #9
Ну по идеи должно работать и без асинхронной задачи, разве нет?
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 839
18.04.2015, 11:35     Connect to MS SQL и ошибка "unfortunately has stopped" #10
Temoxa,
Цитата Сообщение от Temoxa Посмотреть сообщение
Ну по идеи должно работать и без асинхронной задачи, разве нет?
по идее Вы получите NetworkOnMainThreadException в API больше 11
gitarillo
719 / 519 / 24
Регистрация: 17.06.2010
Сообщений: 1,012
Записей в блоге: 1
15.05.2015, 00:04     Connect to MS SQL и ошибка "unfortunately has stopped" #11
Добрый день, уважаемые.
Сразу скажу очень много чего пересмотрел, перепробовал, не помогает в решении моей проблемы.
Есть маленькое приложение, задача которого просто соединиться с сервером ms sql.
Сервер сам настроил, все открыл, что нужно, в фаерволе все тоже сделал.
Коннект ни в какую не хочет происходить.
Фрагмент кода
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
//.............
Context ct=getApplicationContext();
            Toast to;
            if (!validDataConnections())
            {
                to=Toast.makeText(ct, errorDb, Toast.LENGTH_SHORT);
            }
            else
            {
                
                String log="";
                try
                {
                    Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
                    log+="Дравер найден\n";
                
                 Connection conn = DriverManager.getConnection(
                "jdbc:jtds:sqlserver://192.168.0.101:1433/alimovdb", "sa","7420178");
// после этой строчки вываливается исключение типа permission denied NETWORK error
 
                 log+="Экзепляр соединения создан\n";
                 
                    Statement st = conn.createStatement();
                    log+="Соединение открыто\n";
                    ResultSet rs = st.executeQuery("select name from dbo.tb1");
                    // здесь пока все убрал
                    }
                }
                catch (Exception e)
                {
                    to=Toast.makeText(ct, log+e.toString(), Toast.LENGTH_SHORT);
                }
                            
            
            if (to!=null)
            {
                to.setGravity(Gravity.CENTER, 0, 0);
                to.show();
            }
 
//........
Драйвера пробовал различные, версии тоже. Ничего не помогает.
Проверял коннект с других программ, специально на C# написал программу для тестирования подключения. С любых компов работает, а с android никак. Скачал с маркета MSSQL console lite. C нее тоже удалось подключиться.
Помогите, мозг уже сломал

Добавлено через 1 час 45 минут
Разобрался. Ошибка была не в подключении, а именно в том, что нужно работать через AsyncTask. Если кому интересен пример, могу скинуть сюда.
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 535
Записей в блоге: 1
15.05.2015, 07:03     Connect to MS SQL и ошибка "unfortunately has stopped" #12
gitarillo, кинь примерчик если не сложно плиз?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2015, 11:49     Connect to MS SQL и ошибка "unfortunately has stopped"
Еще ссылки по теме:

Ошибка в Android Studio: "x86 emulation currently requires hardware acceleration" - Программирование Android
C:\Users\karr\AppData\Local\Android\sdk\tools\emulator.exe -netdelay none -netspeed full -avd Nexus_S_API_19 emulator: ERROR: x86...

Ошибка при создании проекта "invalid LOC header (bad signature)" - Программирование Android
Здравствуйте! При создании нового проекта в Android Studio возникает ошибка Что это и что с этим делать?

Ошибка "Cannot find symbol variable layout" - Программирование Android
Подскажите, что случилось: edit_Text2 = (EditText) findViewById(R.id.editText2); edit_Text13 = (EditText)...

"В приложении произошла ошибка" при нажатии на кнопку перехода на какую-либо активность - Программирование Android
Нужно было несколько функций в одно приложение соединить..Отдельно каждая из них как отдельная программа работает - запускается.. Создав...

При нажатии на кнопку выходит ошибка "Attempting to invoke method on a null object reference" - Программирование Android
Доброго дня! Есть вот этот код. При нажатии на кнопку Add выдает Attempting to invoke interface method java.sql.Statement...


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

Или воспользуйтесь поиском по форуму:
gitarillo
719 / 519 / 24
Регистрация: 17.06.2010
Сообщений: 1,012
Записей в блоге: 1
18.05.2015, 11:49     Connect to MS SQL и ошибка "unfortunately has stopped" #13
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
package classes;
 
public class SqlProv {
 
    private String ServAndDb;
    private String userName;
    private String password;
    private String server;
    private String db;
    
    // Это конструктор класса подключения к базе данных
    public SqlProv(String server, String dataBase, String uName, String pass)
    {
        this.ServAndDb= "jdbc:jtds:sqlserver://" + server + "/" + dataBase;
        this.userName=uName;
        this.password=pass;     
        this.server=server;
        db=dataBase;
    }
    
    // Получить имя сервера с драйвером и базой данных
    public String GetServerAndDb()
    {
        return this.ServAndDb;
    }
    // Получить имя пользователя
    public String GetUserName()
    {
        return this.userName;
    
    }
    // Получить имя пользователя
    public String GetDb()
    {
        return this.db;
        
    }
    
    // Получить пароль
        public String GetPass()
        {
            return this.password;
        
        }
        
        // Получить сервер
        public String GetServer()
        {
            return this.server;
                
        }
    
    // Выводит все данные о подлючении, кроме пароля
    public String GetAll()
    {
        return "Сервер:" + this.ServAndDb + "\nПользователь:" + this.userName;
                
    }
    
}
 
 
 
 
// реализация обработчика нажатия на кнопку сохранения настроек
    public OnClickListener btn_check_server_Click=new OnClickListener() 
    {
        // метод который реализуется
        @Override
        public void onClick(View v) 
        {
            
            
            Context ct=getApplicationContext(); // получаем контекст приложения
            
            if (!validDataConnections()) // проверяем пустоту полей
            {
                // если пусто, дальше не идем, а показываем сообщение
                to=Toast.makeText(ct, errorDb, Toast.LENGTH_LONG);
                to.setGravity(Gravity.CENTER, 0, 0);
                to.show();
                return;
            }
            else
            {
                // создаем новый экземляр класса работы с бд
// это просто для хранения настроек. в принципе можно просто в переменных хранить
                SqlSetUser=new SqlProv(
                        t_server.getText().toString(),
                        t_database.getText().toString(),
                        t_username.getText().toString(), 
                        t_password.getText().toString()
                        );
                
                asyncth asyc=new asyncth(SqlSetUser);   // создаем объект асинхронной работы с базой                
                asyc.execute("SELECT [name] FROM [tb1]"); // выполняем выборку из базы
                // где name - имя поля в таблице tb1. По сути нужно подогнать запрос под свою таблицу
                // где храниться номер накладной
                
            }
    }
    };
    
    
    
    Toast to;
    // асинхронная работа с базой
     class asyncth extends AsyncTask<String, Void, JSONArray>  {
        private SqlProv curDbSet;
         // конструктор класса
         public asyncth(SqlProv dbset)
         {
            
             curDbSet=dbset;
         }
        
        private String resm;
                 @Override
                 protected JSONArray doInBackground(String... query) 
                 {
                     resm="";
                     /*resm+="Зашли в метод\n";*/
                   JSONArray resultSet = new JSONArray(); // объект в котором будут храниться результаты выборки
                   // в нашем случае одно значение
                   // но вообще по сути это специализированный двумерный массив
                   try 
                   {
                     Class.forName("net.sourceforge.jtds.jdbc.Driver"); // выбираем драйвер подключения к базе
                    // resm+="Драйвер найден\n";
                     Connection con = null; // переменная подключения
                     Statement st = null; // активизирует подключение е базе
                     ResultSet rs = null; // переменная для работы с результатом выборки
                     
                    
                     try 
                     {
                         // инциализируем подключение
                       con = DriverManager.getConnection(curDbSet.GetServerAndDb(), curDbSet.GetUserName(), curDbSet.GetPass());
                       /*resm+="Соединение установлено\n";*/
                       if (con != null) 
                       {
                         st = con.createStatement();
                         /*resm+="Соединение открыто\n";*/
                       
                         SqlSetUser=curDbSet;
                         rs = st.executeQuery(query[0]); // считываем только первый параметр (у нас один запрос)
                         /*resm+="Запрос выполнен\n";*/
                         if (rs != null) 
                         {
                             
                           int columnCount = rs.getMetaData().getColumnCount(); // количество столбцов выборки
                           /*resm+="Кол-во столбцов=" + String.valueOf(columnCount) + "\n";*/
                           // Сохранение данных в JSONArray
                           while (rs.next()) 
                           {
                             JSONObject rowObject = new JSONObject(); // объект для считывания строки из таблицы
                             for (int i = 1; i <= columnCount; i++)  // цикл по столбцам
                             {
                                 // наполняем строку данными проходясь по столбцам
                               rowObject.put(rs.getMetaData().getColumnName(i), (rs.getString(i) != null) ? rs.getString(i) : "");
                             }
                             // отправляем результат в результсет
                             resultSet.put(rowObject);
                           }
                         }
                       }
                     } 
                     catch (SQLException e) // перехватываем ошибку выполнения запроса
                     {
                         resm+="Ошибка SQL:" + e.getMessage();
                     } 
                     catch (JSONException e) // перехватываем ошибку работы с JSON объектом
                     {
                       e.printStackTrace();
                     } 
                     finally // блок, срабатывающий в любом случае
                     {
                       try 
                       {
                           // закрытие всех открытых соединений
                         if (rs != null) rs.close();
                         if (st != null) st.close();
                         if (con != null) con.close();
                       } 
                       catch (SQLException e) 
                       {
                         throw new RuntimeException(e.getMessage());
                       }
                     }
                   } 
                   catch (ClassNotFoundException e) 
                   {
                     e.printStackTrace();
                   }
                   return resultSet; // возавращаем результат
                 }
     
                 
                 // этот метод вызывается, когда выборка завершится полностью
                 @Override
                 protected void onPostExecute(JSONArray result) 
                 {
                    // TODO: вернуть результат
                     try
                     {
                         JSONObject tmp= result.getJSONObject(0); // получаем единственную строку (нам больше не надо)
                         resm+=tmp.getString("name"); // по имени столбца изымаем значение
                        
                        
                         
                         
                     }
                     catch (Exception e)
                     {
                         resm+="Ошибка при выборе результата {" + e.getMessage() + "}";
                     }
                     // для красоты еще выведем номер накладной как системное сообщение
                     Context ct=getApplicationContext();
                     to=Toast.makeText(ct, resm, Toast.LENGTH_LONG);
                     if (to!=null)
                        {
                            to.setGravity(Gravity.CENTER, 0, 0);
                            to.show();
                        }
                    
                 }
    }
Yandex
Объявления
18.05.2015, 11:49     Connect to MS SQL и ошибка "unfortunately has stopped"
Ответ Создать тему
Опции темы

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