|
7 / 7 / 2
Регистрация: 28.08.2014
Сообщений: 179
|
||||||
AsyncTask и SQLite08.04.2015, 14:57. Показов 2613. Ответов 11
Метки нет (Все метки)
Здравствуйте! У меня в приложении есть БД SQLite, при нажатие на кнопку загрузки, приложение начинает в базу вносить записи.
Структура базы : 1.таблица-одна, колонка - одна 2.Кол-во записей : 20 000 3.Формат записи: String до 10 символов. Метод добавления : через бэкграунд, фоновый поток, используя наследования класса "AsyncTask"
Я понимаю что в фоновом потоке задачи выполняются медленнее. Но всё таки, мне кажется что то слишком долго.
0
|
||||||
| 08.04.2015, 14:57 | |
|
Ответы с готовыми решениями:
11
Как написать формулы в sqlite или отказаться от использования sqlite вовсе Файл cookies.sqlite не sqlite на самом деле, или как его открыть SQLite for Excel или как выгрузить данные в SQLite |
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|
| 08.04.2015, 15:01 | |
Сообщение было отмечено semiromid как решение
Решение
я бы добавлял не по 1 записи, а по 100 например
и прогресс тоже обновлял не после каждой записи
1
|
|
|
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
|
|
| 08.04.2015, 16:08 | |
Сообщение было отмечено semiromid как решение
Решение
1
|
|
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 08.04.2015, 16:18 | |
Сообщение было отмечено semiromid как решение
Решение
semiromid, товарищ, это архинеправильно.
Во-первых, непонятен смысл переменной counter, если есть i. Во-вторых, пользователь не увидит общее количество записей, только лишь текущую. Соответственно, непонятно, как вы будете выводить процент выполнения. В-третьих, как уже правильно сообщили, вставка по одной записи годится разве что для 10 записей. В противном случае надо читать мануалы. Требуется использовать транзакции и вставлять циклом все записи.
1
|
|
|
|
|
| 08.04.2015, 17:33 | |
Сообщение было отмечено semiromid как решение
Решение
1
|
|
|
7 / 7 / 2
Регистрация: 28.08.2014
Сообщений: 179
|
||||||||
| 09.04.2015, 01:38 [ТС] | ||||||||
|
Паблито,
Нужно некий пул создавать? Добавлено через 1 час 25 минут CoolMind, publishProgress(++counter); - выводит процент выполнения
Может лучше вставлять кусками типо так:
Что то мне подсказывает что, нет( А как лучше тогда? Спасибо.
0
|
||||||||
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 09.04.2015, 11:00 | |
|
semiromid, пожалуйста.
Почитайте, например, здесь: http://habrahabr.ru/post/205620/ и внутри тоже пройдите по ссылке. Добавлено через 3 минуты Netscape предлагает тоже хороший вариант, там правильно указано про блок finally при завершении транзакции. Некоторые программисты про него забывают.
1
|
|
|
7 / 7 / 2
Регистрация: 28.08.2014
Сообщений: 179
|
||
| 09.04.2015, 13:24 [ТС] | ||
|
CoolMind,
Спасибо за ссылки. Но я уже реализовал все, работает в десятки раз быстрее. Было 15-20 минут загрузки, стало 13 секунд. Мне бы еще хотелось бы услышать ответ на мой вопрос.
0
|
||
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 09.04.2015, 13:48 | |
|
semiromid, пожалуйста.
Если вы реализовали, то зачем вам ответ на этот вопрос? Кстати, вопрос-то в чём? В медленности цикла for? Нет, он такое же, как и любые другие циклы. Разве что foreach быстрее. Заменять for на куски кода, делающие то же самое, но без for, бессмысленно и даже вредно.
1
|
|
|
7 / 7 / 2
Регистрация: 28.08.2014
Сообщений: 179
|
|
| 09.04.2015, 14:06 [ТС] | |
|
CoolMind,
Спасибо. Но мне хотелось бы знать, как вставлять в базу данных информацию неким объемом за один раз. Или как правильно вставлять информацию, таким способом. Правильно ли я в примере показываю как её вставлять, или нет? Добавлено через 9 минут CoolMind, Может быть другими словами, как вставить 100 записей в одну и ту же колонку БД, одним insert?
0
|
|
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 09.04.2015, 15:41 | |
|
semiromid, насколько я знаю, SQL-запросы позволяют вставку либо по одной записи за раз, либо вставку данных из запроса (множество за раз). Запросом обычно вытягиваются данные из существующих таблиц. Таким образом, если данные для БД являются новыми (не извлекаются из другой таблицы этой же БД), другого способа не придумать.
1
|
|
|
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 256
|
|
| 10.04.2015, 01:43 | |
|
советую почитать про sql очень внимательно и вдумчиво.
Insert - это вставка одной строки в таблицу, для закрепления изменений используется commit Ты можешь сделать 10 раз insert, и 1 раз закрепить все одним commit'ом. Надеюсь смысл ты понял. При том в больших вставках - это рекомендуемое решение. Например при вставке 20000 делать коммит после 5000 записей
1
|
|
| 10.04.2015, 01:43 | |
|
Помогаю со студенческими работами здесь
12
Редактирование связанных объектов через EF в SQLite, C#, EF 6.2, SQLite, C# Winforms SQLite не найден SQLite.Interop,dll AsyncTask AsyncTask Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|