Как вывести resultset в ListView

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 12:35

nikomp писал(а):
klblk писал(а):В вашем случае ResultSet видимо обращается к сети, а onPostExecute выполняется в основном потоке и отсюда ошибка NetworkOnMainThreadException.
Сделайте все операции с ResultSet в методе doInBackground, а в onPostExecute возвращайте что-нибудь нормальное, никак не работающая с сетью.
с сетью я вообще не планировал работать, нужно просто получить результат sql запроса, несколько полей и вывести в listview
Если ты не работал с сетью - почему так к серверу соединяешься через jdbc? кто сказал так делать?
R.id.team

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

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как вывести resultset в ListView

Сообщение klblk » 21 янв 2015, 12:36

Foenix писал(а):klblk, резалтсет это нормальное, типа курсора по-другому.
ResultSet это интерфейс и бог знает как он реализован тут: net.sourceforge.jtds.jdbc.MSCursorResultSet

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

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 12:37

курсор это тоже интерфейс
R.id.team

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

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как вывести resultset в ListView

Сообщение klblk » 21 янв 2015, 12:42

я к тому что в данном случае result.first() дает ошибку, это не значит что любой ResultSet будет давать данную ошибку, но в данном случае дает.
я и порекомендовал завершить все операции с ResultSet в методе doInBackground, и не считаю это плохой рекомендацией.

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

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 12:44

та погоди мы вооще не знаем где ошибка пока конкретно. Скорее всего асинктаск не правильно реализован там
Я работала с резалтсетом спокойно, все там окей.
R.id.team

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

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Как вывести resultset в ListView

Сообщение nikomp » 21 янв 2015, 12:47

Foenix писал(а):at com.example.bd_connect5.MainActivity$ConnectMySql.onPostExecute(MainActivity.java:85)

сюда щелкни два раза, какую строку выдает точно
выдает строку result.first(); в блоке

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

			try {
				result.first();
			} catch (SQLException e1) {
				// TODO Автоматически созданный блок catch
				Log.d(LOG_TAG, e1.getMessage());
			}

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как вывести resultset в ListView

Сообщение klblk » 21 янв 2015, 12:48

ну как не знаем та:

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

01-21 09:26:30.317: E/AndroidRuntime(376): at net.sourceforge.jtds.jdbc.MSCursorResultSet.first(MSCursorResultSet.java:1101)
01-21 09:26:30.317: E/AndroidRuntime(376): at com.example.bd_connect5.MainActivity$ConnectMySql.onPostExecute(MainActivity.java:85)
тут все написано, место и метод

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

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 12:53

так. Обрабатывай резалтсет свой в асинктаске в теле процесса
нафиг ты его обрабатываешь вообще в onPostExecute? это может быть длинный процесс. А выводи уже массив как результат.
Теперь я вспомнила, почему у меня проблем не было, мне в голову не приходило его обрабатывать в основном потоке просто :lol:
R.id.team

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

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Как вывести resultset в ListView

Сообщение nikomp » 21 янв 2015, 12:54

Foenix писал(а): Если ты не работал с сетью - почему так к серверу соединяешься через jdbc? кто сказал так делать?
А, ну для соединения с БД. Я имел ввиду, что кроме соединения больше никак не планировал работать с сетью, соединение проходит нормально, запрос к бд отрабатывает

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Как вывести resultset в ListView

Сообщение nikomp » 21 янв 2015, 12:58

Foenix писал(а):так. Обрабатывай резалтсет свой в асинктаске в теле процесса
нафиг ты его обрабатываешь вообще в onPostExecute? это может быть длинный процесс. А выводи уже массив как результат.
Теперь я вспомнила, почему у меня проблем не было, мне в голову не приходило его обрабатывать в основном потоке просто :lol:
Хорошо. тогда поясните как передать результат ResultSet в массив, сохранив структуру. я имею ввиду что б в массиве так же было 2 поля (которые есть в sql запросе: product и type). B еще, я так понимаю, resultset никак не передать из doInBackground в onPostExecute?

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как вывести resultset в ListView

Сообщение klblk » 21 янв 2015, 13:08

Делай свой класс с нужными полями, при обработке ResultSet сделай ArrayList объектов этого класса и уже этот ArrayList возвращай и делай из него ListView, вероятно с кастомным адаптером.

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

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 13:10

nikomp писал(а):
Foenix писал(а): Если ты не работал с сетью - почему так к серверу соединяешься через jdbc? кто сказал так делать?
А, ну для соединения с БД. Я имел ввиду, что кроме соединения больше никак не планировал работать с сетью, соединение проходит нормально, запрос к бд отрабатывает
это все понятно.. просто понимай что именно ты делаешь. Это не традиционный способ получить данные с сервера.
R.id.team

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

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Как вывести resultset в ListView

Сообщение nikomp » 21 янв 2015, 13:25

Foenix писал(а):
nikomp писал(а):
Foenix писал(а): Если ты не работал с сетью - почему так к серверу соединяешься через jdbc? кто сказал так делать?
А, ну для соединения с БД. Я имел ввиду, что кроме соединения больше никак не планировал работать с сетью, соединение проходит нормально, запрос к бд отрабатывает
это все понятно.. просто понимай что именно ты делаешь. Это не традиционный способ получить данные с сервера.
так все таки, (для ясности) почему не получилось напрямую работать с resultset? почему нужно копировать данные сначала в arrayList?

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Как вывести resultset в ListView

Сообщение nikomp » 21 янв 2015, 13:32

klblk писал(а):Делай свой класс с нужными полями, при обработке ResultSet сделай ArrayList объектов этого класса и уже этот ArrayList возвращай и делай из него ListView, вероятно с кастомным адаптером.
посмотрите пожалуйста правильно ли я заполняю ArrayList:

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

				rs = st.executeQuery("select top 10 product, type from table1");
				Log.d(LOG_TAG, "Выполнили запрос");
				
				int columnCount = rs.getMetaData().getColumnCount();
				
				ArrayList myarray = new ArrayList();
				ArrayList element;

				while (rs.next()) { // retrieve data
					Log.d(LOG_TAG, rs.getString("product"));
					
					element = new ArrayList();
					for (int i=0; i<=columnCount; i++)
					{
						element.add(rs.getObject(i));
					}
					
					myarray.add(element);
				}

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как вывести resultset в ListView

Сообщение klblk » 21 янв 2015, 13:44

Нет, и объявляете не правильно. И я же говорю создать свой класс (MyClassWithUniqueName.java), Написать к нему конструктор типа MyClassWithUniqueName(String product, String type) в котором будут сохранятся соответствующие поля, и уже при работе с ResultSet создайте ArrayList<MyClassWithUniqueName>, куда пишите элементы как-то так add(new MyClassWithUniqueName(rs.getString("product"), rs.getString("type"))).

а вообще коллекции это одна из основ Java, подучите их

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

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 13:48

вообще это в уроках есть
R.id.team

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

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Как вывести resultset в ListView

Сообщение nikomp » 21 янв 2015, 13:50

klblk писал(а):Нет, и объявляете не правильно. И я же говорю создать свой класс (MyClassWithUniqueName.java), Написать к нему конструктор типа MyClassWithUniqueName(String product, String type) в котором будут сохранятся соответствующие поля, и уже при работе с ResultSet создайте ArrayList<MyClassWithUniqueName>, куда пишите элементы как-то так add(new MyClassWithUniqueName(rs.getString("product"), rs.getString("type"))).

а вообще коллекции это одна из основ Java, подучите их
Спасибо, большое!

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

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 14:55

для спасибо кнопка есть
R.id.team

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

nikomp
Сообщения: 68
Зарегистрирован: 08 дек 2014, 17:03

Re: Как вывести resultset в ListView

Сообщение nikomp » 21 янв 2015, 14:58

Foenix писал(а):для спасибо кнопка есть
не могу найти, где она?

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

Re: Как вывести resultset в ListView

Сообщение Foenix » 21 янв 2015, 15:25

справа ручка желтая, маленькая кнопочка.
просто заходишь и думаешь, что тут новый вопрос, а тут просто "спасибо" Очень экономит время.
R.id.team

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

Ответить