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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Послать POST запрос с параметрами и получить json http://www.cyberforum.ru/android-dev/thread1423446.html
Всем привет! Столкнулся с проблемой. Как послать POST запрос и получить назад результат json. Опишу подробно: Есть апи сайта, на котором, чтобы получить json, нужно ввести данные в textarea и...
Программирование Android Javah в android studio 1.0 в терминале android studio ввожу команду C:\DetectPeople\DetectPeopleOpenCV-master\NDKExam\app\src\main>javah -d jni -classpath... http://www.cyberforum.ru/android-dev/thread1423400.html
Android Программирование Android
пишу приложение на андроид (не давно начал изучать) как сделать в андроид приложении 1+2=? при нажатии на imagebutton(1.2.3) чтоб вместо вопроса подставлялось число правильного варианта ,
Программирование Android Почему каждый второй говорит что в android не совсем java?
Часто встречается такое мнение, можно ли считать спеца который пишет для android спецом java?
Программирование Android Выделение цветом в ListView http://www.cyberforum.ru/android-dev/thread1423249.html
Есть адаптер наследуемый от SimpleCursorAdapter. В нем ImageView, TextView и CheckBox. public void bindView(View view, Context context, Cursor cursor) { super.bindView(view, context, cursor);...
Программирование Android WebView android изменить стандартный zoom Здравия желаю. Необходимо изменить стандартный zoom, какого метода не хватает? И еще, хотелось бы что при нажатии тач-кнопки назад, оно перенаправляло на пред идущую страницу, а не на пред идущую... подробнее

Показать сообщение отдельно
gitarillo
720 / 520 / 24
Регистрация: 17.06.2010
Сообщений: 1,012
Записей в блоге: 1
18.05.2015, 11:49
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();
                        }
                    
                 }
    }
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru