Урок 34. Хранение данных. SQLite

Обсуждение уроков
Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Урок 34. Хранение данных. SQLite

Сообщение neoksi » 23 фев 2013, 20:01

gerundii
Вы сами в методах onCreate и onUpgrade выкидываете ошибки и еще чему-то удивляетесь.

gerundii
Сообщения: 8
Зарегистрирован: 23 фев 2013, 16:13

Re: Урок 34. Хранение данных. SQLite

Сообщение gerundii » 23 фев 2013, 23:30

вообще пытался разобрать статью http://www.pandacoder.com/loadingsqlite_db_from_assets/
и по ходу не осилил)
подскажите плзз после такого DBHelper как подключаться к уже существующей базе для выборки данных..

gerundii
Сообщения: 8
Зарегистрирован: 23 фев 2013, 16:13

Re: Урок 34. Хранение данных. SQLite

Сообщение gerundii » 24 фев 2013, 00:40

есть подозрение что метод onCreate в DBHelper должен выглядеть так

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

public void onCreate(SQLiteDatabase db) {
       Initialize();
}
тогда получаю ошибку

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

java.lang.RuntimeException: Unable to resume activity {package.name/a.b.Main}: android.database.sqlite.SQLiteException: no such table: category: , while compiling: SELECT * FROM category
	at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124)
	at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2139)
	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1672)
	at android.app.ActivityThread.access$1500(ActivityThread.java:117)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
ругается на строчку объявления переменной c

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

dbHelper = new DBHelper(this);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor c = db.query("category", null, null, null, null, null, null);
Но в базе таблица имеется..по крайней мере в SQL менеджере просматривается)
скорее ошибка в подключении к бд..

Аватара пользователя
dens
Сообщения: 47
Зарегистрирован: 03 фев 2013, 00:14

Re: Урок 34. Хранение данных. SQLite

Сообщение dens » 24 фев 2013, 02:01

Olivka писал(а):
dens писал(а):Когда разбирался с sqlite в андройде наткнулся на то, что он не поддерживает множественные вставки, хотя сам sqlite судя по документации может делать INSERT множеству строк сразу. В чём дело? Типа такая особенность реализации?
можно ссылочку на документацию, где это написано?
http://www.sqlite.org/lang_insert.html

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

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 24 фев 2013, 12:02

gerundii, автор говорит, что методом OnCreate() вообще не пользуется.
R.id.team

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

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

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 24 фев 2013, 12:04

dens писал(а):
Olivka писал(а):
dens писал(а):Когда разбирался с sqlite в андройде наткнулся на то, что он не поддерживает множественные вставки, хотя сам sqlite судя по документации может делать INSERT множеству строк сразу. В чём дело? Типа такая особенность реализации?
можно ссылочку на документацию, где это написано?
http://www.sqlite.org/lang_insert.html
А, понятно.
Нельзя в андроиде использовать. Можно только через Union all, но там будет строка распарсиваться, поэтому дольше, чем обычная вставка.
А по мне и так хорошо вставляется, у меня 90 тыс строк быстро идут, там немного оптимизировать можно. Или не в скорости вопрос?
R.id.team

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

gerundii
Сообщения: 8
Зарегистрирован: 23 фев 2013, 16:13

Re: Урок 34. Хранение данных. SQLite

Сообщение gerundii » 24 фев 2013, 12:28

Olivka писал(а):gerundii, автор говорит, что методом OnCreate() вообще не пользуется.
Так а как должно происходить подключение к бд?..

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

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 24 фев 2013, 14:02

gerundii писал(а):
Olivka писал(а):gerundii, автор говорит, что методом OnCreate() вообще не пользуется.
Так а как должно происходить подключение к бд?..
повторите самостоятельно урок отсюда, а потом разберитесь в статье.. многое поймете..
R.id.team

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

gerundii
Сообщения: 8
Зарегистрирован: 23 фев 2013, 16:13

Re: Урок 34. Хранение данных. SQLite

Сообщение gerundii » 24 фев 2013, 14:27

Olivka писал(а):
gerundii писал(а):
Olivka писал(а):gerundii, автор говорит, что методом OnCreate() вообще не пользуется.
Так а как должно происходить подключение к бд?..
повторите самостоятельно урок отсюда, а потом разберитесь в статье.. многое поймете..

Так читал уже и уроки и статьи..и пока действительно не очень понимаю в чем может быть проблема..
Если не сложно, подскажите прямо что не так?)буду очень признателен!)

Аватара пользователя
dens
Сообщения: 47
Зарегистрирован: 03 фев 2013, 00:14

Re: Урок 34. Хранение данных. SQLite

Сообщение dens » 24 фев 2013, 15:09

Olivka писал(а):
dens писал(а):
Olivka писал(а):
dens писал(а):Когда разбирался с sqlite в андройде наткнулся на то, что он не поддерживает множественные вставки, хотя сам sqlite судя по документации может делать INSERT множеству строк сразу. В чём дело? Типа такая особенность реализации?
можно ссылочку на документацию, где это написано?
http://www.sqlite.org/lang_insert.html
А, понятно.
Нельзя в андроиде использовать. Можно только через Union all, но там будет строка распарсиваться, поэтому дольше, чем обычная вставка.
А по мне и так хорошо вставляется, у меня 90 тыс строк быстро идут, там немного оптимизировать можно. Или не в скорости вопрос?
Конечно, лишняя оптимизация нигде не помешает. Просто привык к тому, что, где это возможно, стоит стараться делать всё пакетно - и быстрее, и надёжнее в смысле атомарности операций. Нет, так нет, просто удивило, что сам язык поддерживает insert множественные, а при работе в андройде разработчики подрезали возможности. Может, это и было необходимо, им виднее.

gerundii
Сообщения: 8
Зарегистрирован: 23 фев 2013, 16:13

Re: Урок 34. Хранение данных. SQLite

Сообщение gerundii » 26 фев 2013, 11:03

gerundii писал(а):
Olivka писал(а):
gerundii писал(а):
Olivka писал(а):gerundii, автор говорит, что методом OnCreate() вообще не пользуется.
Так а как должно происходить подключение к бд?..
повторите самостоятельно урок отсюда, а потом разберитесь в статье.. многое поймете..

Так читал уже и уроки и статьи..и пока действительно не очень понимаю в чем может быть проблема..
Если не сложно, подскажите прямо что не так?)буду очень признателен!)

Неужели никто не поможет?!

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 34. Хранение данных. SQLite

Сообщение KamiSempai » 26 фев 2013, 19:47

gerundii писал(а):Неужели никто не поможет?!
Там же черным по белому написано, метод onCreate, в данном случае, никогда не вызывается. Инициализируйте базу как написано в статье, а затем открывайте ее как описано в этом уроке.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

gerundii
Сообщения: 8
Зарегистрирован: 23 фев 2013, 16:13

Re: Урок 34. Хранение данных. SQLite

Сообщение gerundii » 27 фев 2013, 01:11

KamiSempai писал(а):
gerundii писал(а):Неужели никто не поможет?!
Там же черным по белому написано, метод onCreate, в данном случае, никогда не вызывается. Инициализируйте базу как написано в статье, а затем открывайте ее как описано в этом уроке.

Вроде так и делаю

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

public void onCreate(Bundle savedInstanceState) {		
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.main);
    	DBHelper.Initialize();
	dbHelper = new DBHelper(this);
	SQLiteDatabase db = dbHelper.getWritableDatabase();
	Cursor c = db.query("command", null, null, null, null, null, null);
но ошибки..

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 34. Хранение данных. SQLite

Сообщение KamiSempai » 27 фев 2013, 22:42

gerundii писал(а):Вроде так и делаю
А в методе onCreate класса DBHelper что написано? Он должен быть пустым.
Советую проверить существование таблицы, возможно она по другому называется.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

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

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 01 мар 2013, 15:09

Кто-нибудь делал разные классы для разных таблиц sqlite?
Как там все согласовывается с одним helper-ом..?
R.id.team

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

Andir
Сообщения: 3
Зарегистрирован: 21 фев 2013, 09:31

Re: Урок 34. Хранение данных. SQLite

Сообщение Andir » 05 мар 2013, 09:36

как сделать так чтобы данные которые хранятся в БД вывести в TextView?

Аватара пользователя
dens
Сообщения: 47
Зарегистрирован: 03 фев 2013, 00:14

Re: Урок 34. Хранение данных. SQLite

Сообщение dens » 09 мар 2013, 22:17

Вынуть из бд и засунуть в TextView

nunuchek
Сообщения: 6
Зарегистрирован: 27 мар 2013, 14:23

Re: Урок 34. Хранение данных. SQLite

Сообщение nunuchek » 29 мар 2013, 11:25

Andir писал(а):как сделать так чтобы данные которые хранятся в БД вывести в TextView?
В onCreate напишите :

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

TextView output;
output = (TextView) findViewByID(R.id.output);
А потом после нажатия на кнопку вызывайте метод:

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

public void out(){
	  // connect to DB
	    SQLiteDatabase db = dbHelper.getWritableDatabase();
	    
	  Cursor c = db.query("mytable", null, null, null, null, null, null);
      if (c.moveToFirst()) {

        int idColIndex = c.getColumnIndex("id");
        int nameColIndex = c.getColumnIndex("name");
        int emailColIndex = c.getColumnIndex("email");
        output.setText("");
        do {
        	
               output.setText(output.getText()+"\n"+"ID = "+c.getInt(idColIndex)+", name = "+c.getString(nameColIndex)+", email = "+c.getString(emailColIndex));
             
        } while (c.moveToNext());
      } else
      { 
    	
    	  output.setText(""); 
    	 
    	  
      }
      c.close();
      dbHelper.close();
  };

nunuchek
Сообщения: 6
Зарегистрирован: 27 мар 2013, 14:23

Re: Урок 34. Хранение данных. SQLite

Сообщение nunuchek » 29 мар 2013, 11:27

Как созданную БД (из урока) открыть в другой Activity ?

нашел решение:

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


private static String DB_PATH = "/data/data/com.example.p0341_simplesqlite/databases/";
private static String DB_NAME = "myDB";
 
String myPath = DB_PATH + DB_NAME;
db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
Последний раз редактировалось nunuchek 29 мар 2013, 14:29, всего редактировалось 1 раз.

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

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 29 мар 2013, 13:34

nunuchek писал(а):Как созданную БД (из урока) открыть в другой Activity ?
граждане, хватит уже - только что это обсуждали в данной теме.
R.id.team

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

Ответить