powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / resultset+listView
9 сообщений из 9, страница 1 из 1
resultset+listView
    #38857733
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добрый день!

Подскажите как вывести результат ResultSet в ListView
ResultSet заполняется запросом в AsyncTask. ("select top 10 product, type from table")
есть layout (item.xml), в котором два textview (product и type)

пробую вот так (может конечно и бредово, но я пока разбираюсь только):

Код: 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.
public void onPostExecute(ResultSet result)
        {
            // Считаем кол-во строк ResultSet
			try {
				while (rs.next()){
					Log.d(LOG_TAG,"Получено строк "+Integer.toString(resulSetSize));
					resulSetSize=resulSetSize+1;
				}
			} catch (SQLException e) {
				// TODO Автоматически созданный блок catch
				e.printStackTrace();
			}
			
			ArrayList product = new ArrayList();  
			ArrayList type = new ArrayList();
			
			// Заполняем массивы
			try {
				while (rs.next()){
					product.add(rs.getObject(0));
					type.add(rs.getObject(1));
				}
			} catch (SQLException e) {
				// TODO Автоматически созданный блок catch
				e.printStackTrace();
			}
			
			
		    // упаковываем данные в понятную для адаптера структуру
		    ArrayList<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
		    Map<String, Object> m;
		    try {
				while (rs.next()){
				    for (int i = 0; i < resulSetSize; i++) {
				      m = new HashMap<String, Object>();
				      m.put("product", rs.getObject(0));
				      m.put("type", rs.getObject(1));
				      data.add(m);
				    }
				}
			} catch (SQLException e) {
				// TODO Автоматически созданный блок catch
				e.printStackTrace();
			}
			
			String[] from = {"product","type"};
			int[] to = {R.id.tvText1,R.id.tvText2};
			
			// создаем адаптер
		    SimpleAdapter sAdapter = new SimpleAdapter(MainActivity.this, data, R.layout.item, from, to);
			
    
            //adapter = new Array Adapter<String> (MainActivity.this , android.R.layout.simple_list_item_1, result);
            Log.d(LOG_TAG,"Устанавливаем адаптер");
            lv.setAdapter(adapter);
            //adapter.addAll(result);
            //adapter.notifyDataSetChanged();
        }



Ошибок в ide нет, но при запуске приложения в эмуляторе выскакивает ошибка
...
Рейтинг: 0 / 0
resultset+listView
    #38858029
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompдобрый день!

Подскажите как вывести результат ResultSet в ListView
ResultSet заполняется запросом в AsyncTask. ("select top 10 product, type from table")
есть layout (item.xml), в котором два textview (product и type)

пробую вот так (может конечно и бредово, но я пока разбираюсь только):

Ошибок в ide нет, но при запуске приложения в эмуляторе выскакивает ошибка

1) Какая ошибка
2) у Вас нигде нет rs.first() или rs.beforeFirst();
...
Рейтинг: 0 / 0
resultset+listView
    #38858063
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

Ошибка force cloce.

Ошибку локализовал

Код: 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.
try {
				rs.beforeFirst();
			} catch (SQLException e1) {
				// TODO Автоматически созданный блок catch
				e1.printStackTrace();
			}
		    // упаковываем данные в понятную для адаптера структуру
		    ArrayList<Map<String, String>> data = new ArrayList<Map<String, String>>();
		    Log.d(LOG_TAG,"создаем ArrayList");
		    Map<String, String> m;
		    Log.d(LOG_TAG,"создаем MAP");
		    try {
		    	Log.d(LOG_TAG,"eee"); // <-СТРОКА ЕСТЬ В ЛОГЕ
				while (rs.next()){
					Log.d(LOG_TAG,"фф"); // <-СТРОКИ В ЛОГЕ НЕТ
				    //for (int i = 0; i < resulSetSize; i++) {
				      m = new HashMap<String, String>();
				      m.put("product", rs.getString(0));
				      m.put("type", rs.getString(1));
				      Log.d(LOG_TAG,rs.getString(0));
				      data.add(m);
				    //}
				}
			} catch (SQLException e) {
				// TODO Автоматически созданный блок catch
				e.printStackTrace();
			}



Так же добавил rs.beforeFirst(), но результат тот же возникает ошибка. где-то попадалась информация, что я по resultset могу пройти только 1 раз это так?
...
Рейтинг: 0 / 0
resultset+listView
    #38858076
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.coderanch.com/t/571761/java/java/ResultSet That would work if you didn't have a forward-only data set. But usually when beginners want to use a ResultSet twice, that's based on incomplete knowledge. Often they want to put the rows into an array (because they don't know about anything better) so they decide to read the thing once just to count the rows and then go through it again to put the rows into the array which they sized based on the count.
там же есть совет попробовать
Код: java
1.
Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
...
Рейтинг: 0 / 0
resultset+listView
    #38858115
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiver,

у меня для ResultSet заданы такие опции

Код: java
1.
2.
Statement st = null;
st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);



при этом, если использую rs.beforeFirst(), ошибка возникает при попытки начать цикл while (rs.next()){...}.
Если использую rs.first(), ошибка возникает на этой строке.
Не понимаю где находится курсор после выполнения executeQuery?
может ResultSet нельзя использовать как результат выполнения AsyncTask?
...
Рейтинг: 0 / 0
resultset+listView
    #38858571
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никто не сталкивался с подобной проблемой?
...
Рейтинг: 0 / 0
resultset+listView
    #38858789
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompникто не сталкивался с подобной проблемой?
Честно говоря не понимаю что вам мешает убрать это тройное чтение rs.
Судя по коду можно один раз всё вычитать и дальше работать с результатом, это так же позволит освободить часть ресурсов быстрее.
...
Рейтинг: 0 / 0
resultset+listView
    #38859212
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может кто-то поделится примерчиком как выгрузить resultset в listview, пожалуйста
...
Рейтинг: 0 / 0
resultset+listView
    #38859796
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikompможет кто-то поделится примерчиком как выгрузить resultset в listview, пожалуйста
для начала перейди в правильный раздел. андроид этажом ниже. по поводу примерчика - задача слишком тривиальна, чтоб постить какие-то примерчики. в интернете примеров работы с listview и адаптерами миллион и еще пару штук.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / resultset+listView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]