Урок 35. SQLite. Методы update и delete с указанием условия

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение damager82 » 29 ноя 2012, 16:20

Структурировать данные из БД, это ListView проще всего ...
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

trololo1
Сообщения: 10
Зарегистрирован: 26 дек 2012, 11:37

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение trololo1 » 26 дек 2012, 11:40

Благодаря чему здесь сохраняются значения в полях при повороте экрана с портретного на ландшафтный и наоборот?
up


Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 04 янв 2013, 01:41

trololo1 а почему данные должны теряться? не вижу намёка на то что бы они менялись/затерались при повороте
R.id.team
Политика на форуме запрещена

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение damager82 » 14 янв 2013, 10:25

trololo1 писал(а):Благодаря чему здесь сохраняются значения в полях при повороте экрана с портретного на ландшафтный и наоборот?
up
Урок 70.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение $01ny$hko » 15 янв 2013, 20:55

Всем добрый вечер! Ребята прошу экстренной помощи!!!! У меня есть готовая БД, подгружаю её в проект, но почему-то она не копируется в //data//data//%s//databases//, естественно приложение рушиться когда дело доходит до мест, где используется БД. А самое интересное, что когда передаю проект знакомым, на их компьютерах всё корректно работает!!! То есть напрашивается вывод что с кодом всё прекрасно. Тогда куда копать?? Помогите разобраться в чём может быть проблема, где причину искать???
P.S. я уже даже eclipse переустановила...

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 15 янв 2013, 22:13

1) как подгружаете?;
2) на каких версиях андроида тестили? (именно девайсные);
3) на какой версии не получается подгрузить? (телефонной а не эмуляторной)
R.id.team
Политика на форуме запрещена

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение $01ny$hko » 15 янв 2013, 23:05

rezak90, спасибо за оперативность!
1) подгружала и копированием и перетаскиванием
2) на всех перепробовала от 8 до 15;
3) а вот тут интересно: если АПК скомпилирован с моего компа, то ни на каких не работает. А вот если АПК того же проекта брать с других компов тогда на чём угодно прекрасно функционирует.

Тогда уж вопрос: как правильно БД с компьютера подгружать в assets? (может действительно что-то не так делаю, хотя друзья через google диск загружают).

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 15 янв 2013, 23:23

зачем загружать бд, если вам нужна начальная бд с какими то значениями то почему бы не создать её программно и не заполнить её
честно не встречал что бы подгружали бд как обычный файл, но думаю метод ничем не отличается от обычного файла. Есть вариант что возможно выставляются права на файл которые не позволяют с ним работать или же файл бд не туда становится, как вариант попробуйте обратится к бд не как к бд а как к обычному файлу, то есть проверить его на существование

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

File file = new File("path");
if(file.exists())
Log.i("check", "true");
else
Log.i("check", "false);
R.id.team
Политика на форуме запрещена

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение $01ny$hko » 15 янв 2013, 23:37

rezak90, может не внятно объяснила сначала, просто голова уже кипит с этой базой...
зачем загружать бд, если вам нужна начальная бд с какими то значениями то почему бы не создать её программно и не заполнить её
Дело в том, что база у меня очень большая (около 8 метров).
Есть вариант что возможно выставляются права на файл которые не позволяют с ним работать или же файл бд не туда становится
Тут ведь какая история - тогда и на других компьютерах он бы вёл себя точно также (а я ведь проект передаю, то есть всё по последней скобки).
как вариант попробуйте обратится к бд не как к бд а как к обычному файлу, то есть проверить его на существование
Думаю что вряд ли в этом дело, потому как если смотреть в File Exploer то там по известному пути отображается БД, правда весит 0.
Вот такая запутанная история.
Может ещё что-нибудь придёт на ум?
Буду благодарна.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 16 янв 2013, 00:15

тогда покажите как копируете, потому что примеров куча с копированием бд из ассетса
как вариант попробуйте скачать другой эклипс и с него сделать апк, возможно всё в ней если везде нормально компилится а у вас нет
R.id.team
Политика на форуме запрещена

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение $01ny$hko » 16 янв 2013, 10:25

rezak90, подскажите, может просто чего-нибудь не хватает в эклипсе, там драйверов каких или библиотеки либо вообще на компьютере? Эклипс я уже два раза переустанавливала ((.
Весь код писать не буду, а непосредственно копирование вот так делаю

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

private void copyDataBase() throws IOException {
		// Открываем поток для чтения из уже созданной нами БД
		// источник в assets
		Log.e("myTag", "Начинается копирование базы данных");
		InputStream externalDbStream = context.getAssets().open(DB_NAME);

		// Путь к уже созданной пустой базе в андроиде
		String outFileName = DB_PATH + DB_NAME;

		// Теперь создадим поток для записи в эту БД побайтно
		OutputStream localDbStream = new FileOutputStream(outFileName);

		// Собственно, копирование
		byte[] buffer = new byte[1024];
		int bytesRead;
		while ((bytesRead = externalDbStream.read(buffer)) > 0) {
			localDbStream.write(buffer, 0, bytesRead);
		}
		// Мы будем хорошими мальчиками (девочками) и закроем потоки
		localDbStream.close();
		externalDbStream.close();

	}

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение $01ny$hko » 16 янв 2013, 10:46

Вообще делалось всё вот по этому примеру http://idev.by/android/145/ из лога всплывают следующие строки,

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

openDataBase(); 						
,

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

throw new Error("Error copying database");
,

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

createDataBase();
,

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

boolean dbExist = checkDataBase();
а это уже на другое Activity ссылается, где собственно эта база и должна использоваться

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

dbOpenHelper1 = new ExternalDbOpenHelper(context,  DB_NAME);
. SELECT local FROM android_meta_data failed вот начиная с этой строки жалуется что не может найти meta_data...
01-16 07:28:38.585: E/Database(308): Failed to setLocale() when constructing, closing the database
01-16 07:28:38.585: E/Database(308): android.database.sqlite.SQLiteException: no such table: android_metadata
01-16 07:28:38.585: E/Database(308): at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
01-16 07:28:38.585: E/Database(308): at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)
01-16 07:28:38.585: E/Database(308): at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1818)

Знаю, что система сама создает эту таблицу в каждой базе, но у меня она создана непосредственно в БД.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 16 янв 2013, 21:30

R.id.team
Политика на форуме запрещена

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение $01ny$hko » 16 янв 2013, 23:56

О,да!! Сегодня удалила уже эту мета_дату, всё равно конечно не работает, но теперь в /data/data/%s/database появился хоть какой-то вес. Конечно потом АПК можно и с другого компьютера скомпилировать (есть ведь такие на которых работает прекрасно!!), просто уже жУУть как интересно в чём же здесь проблема :?

lstaticl
Сообщения: 2
Зарегистрирован: 31 мар 2013, 18:17

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение lstaticl » 31 мар 2013, 18:20

Если указать в поле id не цифры, а буквы, или float число - приложение упадет.
А в целом по теории работы с БД, осуществляя выборку по ID или иные действия по ID - нужно приводить переменную к INT и после проверять на 0. Тогда не надо проверять на пустоту, и нет возможности для Injection. :)

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

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение Foenix » 31 мар 2013, 19:38

lstaticl писал(а):Если указать в поле id не цифры, а буквы, или float число - приложение упадет.
А в целом по теории работы с БД, осуществляя выборку по ID или иные действия по ID - нужно приводить переменную к INT и после проверять на 0. Тогда не надо проверять на пустоту, и нет возможности для Injection. :)
А зачем вообще все это делать, если есть возможность поставить autoinc?
R.id.team

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

lstaticl
Сообщения: 2
Зарегистрирован: 31 мар 2013, 18:17

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение lstaticl » 01 апр 2013, 00:06

Olivka писал(а):А зачем вообще все это делать, если есть возможность поставить autoinc?
А причем здесь автоинкремент? Речь о выборках из БД, а не о вставке... мой камент касается урока.

xolostyak_by
Сообщения: 18
Зарегистрирован: 02 июл 2012, 03:16

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение xolostyak_by » 13 апр 2013, 16:24

Я вроде как понимаю. Но повторить пока вряд ли смогу. Это нормально? или надо все прям детально разбирать? или потом придет?:)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 13 апр 2013, 19:16

xolostyak_by писал(а):Я вроде как понимаю. Но повторить пока вряд ли смогу. Это нормально? или надо все прям детально разбирать? или потом придет?:)
писать, писать, и как можно больше писать кода и тогда будет понятно ;)
R.id.team
Политика на форуме запрещена

Ответить