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

Обсуждение уроков
AlexKem
Сообщения: 9
Зарегистрирован: 27 авг 2014, 08:59

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

Сообщение AlexKem » 29 сен 2014, 12:11

Foenix писал(а):открывай эмулятор не автоматически при запуске приложения, а отдельно, даже до запуска эклипса из менеджера AVD.
если лог будет пустой, то перезапусти ADB
adb kill-server
adb start-server
adb devices
последнюю команду можно опустить, она просто список подключенных устрйоств открывает.
А как это сделать? В уроках написано открывать через Ctrl + F11.

И как делать

adb kill-server
adb start-server

Через что? Через командную строку CMD?

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

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

Сообщение KamiSempai » 29 сен 2014, 12:35

AlexKem писал(а):И как делать

adb kill-server
adb start-server

Через что? Через командную строку CMD?
Через командную строку. Только для тогоб что бы работало нужно перейти в папку "<Полный путь к папке с SDK>/platform-tools", либо прописать этот путь в системных переменных.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

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

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

Сообщение klblk » 29 сен 2014, 14:08

Наверное я делаю плохо (Windows): ctrl+shift+esc->processes->adb.exe->end task->"Ждем 20 секунд, пока adb перезапустится"
И еще для появления логов иногда нужно щелкнуть на нужном девайсе (в DDMS или на вкладке Devices)

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

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

Сообщение Mikhail_dev » 29 сен 2014, 15:00

Наверное я делаю плохо (Windows): ctrl+shift+esc->processes->adb.exe->end task->"Ждем 20 секунд, пока adb перезапустится"
Жесть какая-то. У меня рука сломается такую комбинацию нажимать.

И да, не забываем про переменные среды, дабы упростить себе жизнь.

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

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

Сообщение Foenix » 29 сен 2014, 15:07

bat делаешь и потом 1 щелчок.
R.id.team

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

AlexKem
Сообщения: 9
Зарегистрирован: 27 авг 2014, 08:59

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

Сообщение AlexKem » 30 сен 2014, 06:52

KamiSempai писал(а):
AlexKem писал(а):И как делать

adb kill-server
adb start-server

Через что? Через командную строку CMD?
Через командную строку. Только для тогоб что бы работало нужно перейти в папку "<Полный путь к папке с SDK>/platform-tools", либо прописать этот путь в системных переменных.
Я пока ждал ответов, увидел, что бывают проблемы из-за расположения папки с эклипсом.
Перенес все с рабочего стола в корень диска и убрал всю латиницу. После этого пришлось заново сделать проект, так как этот ругался на отсутствующую прошлую директорию.

Все заработало. Спасибо за помощь.

P.S.: Эклипсом пользуюсь впервые и чувствую в нем себя неуверенно. Надеюсь, в будущем я пойму ваши ответы.

Krazee
Сообщения: 8
Зарегистрирован: 12 окт 2014, 20:28

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

Сообщение Krazee » 12 окт 2014, 20:37

Просьба помочь начинающему и малограмотному :)

За основу взял урок 34. Оставил только поле name + добавил свое поле town.
В итоге:
Если использую только поле name, все нормально и логи нормальные. Если добавляю одно свое поле, пишет лог ID = -1
Вот лог

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

10-12 18:15:20.230: D/myLogs(857): --- Insert in mytable: ---
10-12 18:15:20.270: D/myLogs(857): row inserted, ID = -1
10-12 18:15:26.480: D/myLogs(857): --- Rows in mytable: ---
10-12 18:15:26.480: D/myLogs(857): 0 rows
10-12 18:15:29.970: D/myLogs(857): --- Clear mytable: ---
10-12 18:15:29.990: D/myLogs(857): deleted rows count = 0
Код активити

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

package com.example.sqlitekrazee;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener {

	  final String LOG_TAG = "myLogs";

	  Button btnAdd, btnRead, btnClear;
	  EditText etName, etFam;

	  DBHelper dbHelper;

	  /** Called when the activity is first created. */
	  @Override
	  public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.main);

	    btnAdd = (Button) findViewById(R.id.btnAdd);
	    btnAdd.setOnClickListener(this);

	    btnRead = (Button) findViewById(R.id.btnRead);
	    btnRead.setOnClickListener(this);

	    btnClear = (Button) findViewById(R.id.btnClear);
	    btnClear.setOnClickListener(this);

	    etName = (EditText) findViewById(R.id.etName);
	    etFam = (EditText) findViewById(R.id.etFam);
	    
	    // создаем объект для создания и управления версиями БД
	    dbHelper = new DBHelper(this);
	  }

	  
	  @Override
	  public void onClick(View v) {
	    
	    // создаем объект для данных
	    ContentValues cv = new ContentValues();
	    
	    // получаем данные из полей ввода
	    String name = etName.getText().toString();
	    String fam = etFam.getText().toString();

	    // подключаемся к БД
	    SQLiteDatabase db = dbHelper.getWritableDatabase();
	    

	    switch (v.getId()) {
	    case R.id.btnAdd:
	      Log.d(LOG_TAG, "--- Insert in mytable: ---");
	      // подготовим данные для вставки в виде пар: наименование столбца - значение
	      
	      cv.put("name", name);
	      cv.put("fam", fam);
	      // вставляем запись и получаем ее ID
	      long rowID = db.insert("mytable", null, cv);
	      Log.d(LOG_TAG, "row inserted, ID = " + rowID);
	      break;
	    case R.id.btnRead:
	      Log.d(LOG_TAG, "--- Rows in mytable: ---");
	      // делаем запрос всех данных из таблицы mytable, получаем Cursor 
	      Cursor c = db.query("mytable", null, null, null, null, null, null);

	      // ставим позицию курсора на первую строку выборки
	      // если в выборке нет строк, вернется false
	      if (c.moveToFirst()) {

	        // определяем номера столбцов по имени в выборке
	        int idColIndex = c.getColumnIndex("id");
	        int nameColIndex = c.getColumnIndex("name");
	        int famColIndex = c.getColumnIndex("fam");

	        do {
	          // получаем значения по номерам столбцов и пишем все в лог
	          Log.d(LOG_TAG,
	              "ID = " + c.getInt(idColIndex) + 
	              ", name = " + c.getString(nameColIndex) +
	              ", fam = " + c.getString(famColIndex));
	          // переход на следующую строку 
	          // а если следующей нет (текущая - последняя), то false - выходим из цикла
	        } while (c.moveToNext());
	      } else
	        Log.d(LOG_TAG, "0 rows");
	      c.close();
	      break;
	    case R.id.btnClear:
	      Log.d(LOG_TAG, "--- Clear mytable: ---");
	      // удаляем все записи
	      int clearCount = db.delete("mytable", null, null);
	      Log.d(LOG_TAG, "deleted rows count = " + clearCount);
	      break;
	    }
	    // закрываем подключение к БД
	    dbHelper.close();
	  }
	  
	  

	  class DBHelper extends SQLiteOpenHelper {

	    public DBHelper(Context context) {
	      // конструктор суперкласса
	      super(context, "myDB", null, 1);
	    }

	    @Override
	    public void onCreate(SQLiteDatabase db) {
	      Log.d(LOG_TAG, "--- onCreate database ---");
	      // создаем таблицу с полями
	      db.execSQL("create table mytable ("
	          + "id integer primary key autoincrement," 
	          + "name text,"
	          + "fam text" + ");");
	    }

	    @Override
	    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

	    }
	  }

	}
Код main.xml

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

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.sqlitekrazee.MainActivity"
    tools:ignore="MergeRootFrame" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/etName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="имя" >

            <requestFocus />
        </EditText>

        <EditText
            android:id="@+id/etFam"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="фамилия" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btnAdd"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Добавить" />

            <Button
                android:id="@+id/btnRead"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Считать" />

            <Button
                android:id="@+id/btnClear"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Удалить" />

        </LinearLayout>

    </LinearLayout>

</FrameLayout>
Подскажите пожалуйста, что я делаю не так...

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

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

Сообщение KamiSempai » 13 окт 2014, 10:41

Krazee писал(а):За основу взял урок 34. Оставил только поле name + добавил свое поле town.
Не вижу в коде упоминания про "town". Это действительно тот код?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Krazee
Сообщения: 8
Зарегистрирован: 12 окт 2014, 20:28

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

Сообщение Krazee » 13 окт 2014, 10:55

KamiSempai писал(а):
Krazee писал(а):За основу взял урок 34. Оставил только поле name + добавил свое поле town.
Не вижу в коде упоминания про "town". Это действительно тот код?
town - это то, что добавил я...
Вчера покурил ветку и сделал как и один человек:

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

class DBHelper extends SQLiteOpenHelper {

	  [code]  class DBHelper extends SQLiteOpenHelper {

    public DBHelper(Context context) {
      // конструктор суперкласса
      super(context, "myDB", null, 1);
    }
Здесь заменил myDB на mytable и все заработало. В чем собака порылась, так и не понял. но главное, что работает :)

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

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

Сообщение KamiSempai » 13 окт 2014, 17:32

Krazee писал(а):В чем собака порылась, так и не понял. но главное, что работает :)
Изображение
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Irrumator
Сообщения: 25
Зарегистрирован: 08 окт 2014, 16:39

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

Сообщение Irrumator » 25 окт 2014, 17:20

Не нашёл ответа на свой вопрос.
Вобщем, работаю над приложением, способным изменить мир, так что не зазорно помочь.
Хочу реализовать такое:
При нажатии на любом пункте списка в первом Активити, открывается второй активити с "шаблонным" layout, в котором большая таблица из TextView.
Так вот, таблица то открывается одна, но заполняться она должна каждый раз из разных таблиц бд, в зависимости от нажатого пункта списка в предыдущем активити.
Таблицы эти создаются также при нажатии на пунктах списка того самого первого Активити, ну...должны создаваться. На деле же создаётся только первая таблица, а при нажатии на другом пункте списка - приложение валится.
Весь день пытаюсь разобраться, но безуспешно. Выручайте.

Вот код второго Активити. Из первого в него приходят 2 значения, различных для каждого пункта списка первого Активити... Вот по сумме этих двух значений я и хочу чтобы автоматом создавалось куча шаблонных таблиц) с названием из суммы этих двух строк
Возможно ли такое? Хотя бы ткните носом в очередную мою глупую ошибку дилетанта.

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

public class tabl29 extends Activity {
int Cball1_1, Cball1_2;
	DBHelper dbHelper29;
	 TextView TablName, ball1_1, ball1_2, itog1;
	
	@Override
	  protected void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.tabllay29);

	    TablName = (TextView) findViewById(R.id.TablName);
	    Intent intentmes29 = getIntent();
	    String TablNamebd1 = intentmes29.getStringExtra("TablName1");
	    String TablNamebd2 = intentmes29.getStringExtra("TablName2");
	    TablName.setText(TablNamebd1+TablNamebd2);
	    ball1_1 = (TextView) findViewById(R.id.ball1_1);
	    ball1_2 = (TextView) findViewById(R.id.ball1_2);
	    itog1 = (TextView) findViewById(R.id.itog1);
	    
	    registerForContextMenu(ball1_1);
        registerForContextMenu(ball1_2);
        // создаем объект для создания и управления версиями БД
        dbHelper29 = new DBHelper(this);
     // подключаемся к БД
        SQLiteDatabase db29 = dbHelper29.getWritableDatabase();
     // делаем запрос всех данных из таблицы х, получаем Cursor...при создании 2 таблицы тут приложение валится...
        Cursor c29 = db29.query(TablNamebd1+TablNamebd2, null, null, null, null, null, null);
        // ставим позицию курсора на первую строку выборки
        // если в выборке нет строк, вернется false
        if (c29.moveToFirst()) {
          // определяем номера столбцов по имени в выборке
          int idColIndex = c29.getColumnIndex("id");
          int ball1_1ColIndex = c29.getColumnIndex("ball1_1");
          int ball1_2ColIndex = c29.getColumnIndex("ball1_2");
          do {
              // получаем значения по номерам столбцов и пишем все в textview!!!
        	  
        	  Cball1_1=c29.getInt(ball1_1ColIndex);
        	  Cball1_2=c29.getInt(ball1_2ColIndex);
        	  ball1_1.setText(Integer.toString(Cball1_1));
        	  ball1_2.setText(Integer.toString(Cball1_2));
        	  itog1.setText(Integer.toString(Cball1_1+Cball1_2));
              // переход на следующую строку 
              // а если следующей нет (текущая - последняя), то false - выходим из цикла
            } while (c29.moveToNext());
          } else
          c29.close();
      //очистка бд чтобы потом перезаписать )
        db29.delete(TablNamebd1+TablNamebd2, null, null);
        // закрываем подключение к БД
        dbHelper29.close();
}

	  class DBHelper extends SQLiteOpenHelper {
		  
		  static final int DB_VERSION = 1;
		    public DBHelper(Context context) {
		      // конструктор суперкласса
		      super(context, "myDB", null, DB_VERSION);
		    }
		    Intent intentmes29 = getIntent();
		    String TablNamebd1 = intentmes29.getStringExtra("TablName1");
		    String TablNamebd2 = intentmes29.getStringExtra("TablName2");
		    
		    @Override
		    public void onCreate(SQLiteDatabase db) {
		      // создаем таблицу с полями
		      db.execSQL("create table " + TablNamebd1+TablNamebd2+ "("
		          + "id integer primary key autoincrement," 
		          + "ball1_1 int,"
		          + "ball1_2 int" + ");");
		    }

		    @Override
		    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		    	
		    }
		  }
	
	//опишем создание контекстных меню
	 @Override
	  public void onCreateContextMenu(ContextMenu menu, View v,
	      ContextMenuInfo menuInfo) {

	    switch (v.getId()) {
	    case R.id.ball1_1:
	      menu.add(0, 1, 0, "1 балл");
	      menu.add(0, 2, 0, "2 балла");
	      menu.add(0, 3, 0, "3 балла");
	      break;
	    case R.id.ball1_2:
		  menu.add(0, 4, 0, "1 балл");
		  menu.add(0, 5, 0, "2 балла");
		  menu.add(0, 6, 0, "3 балла");
	      break;
	    }
	  }
	 //обработчик нажатия пунктов меню
	 @Override
	    public boolean onContextItemSelected(MenuItem item) {

	      switch (item.getItemId()) {
	      // пункты меню для 1
	    case 1:
	    	Cball1_1=1;
	      break;
	    case 2:
	    	Cball1_1=2;
	      break;
	    case 3:
	    	Cball1_1=3;
	      break;

	    // пункты меню для 2
	    case 4:
	    	Cball1_2=1;
	      break;
	    case 5:
	    	Cball1_2=2;
	      break;
	    case 6:
	    	Cball1_2=3;
	      break;
	      }
    	  ball1_1.setText(Integer.toString(Cball1_1));
    	  ball1_2.setText(Integer.toString(Cball1_2));
    	  itog1.setText(Integer.toString(Cball1_1+Cball1_2));
	      return super.onContextItemSelected(item);
	    }
	 
	  public void onDestroy() {
		    super.onDestroy();
		    
		    Intent intentmes29 = getIntent();
		    String TablNamebd1 = intentmes29.getStringExtra("TablName1");
		    String TablNamebd2 = intentmes29.getStringExtra("TablName2");
		 // создаем объект для данных
		    ContentValues cv29 = new ContentValues();
		    
		    // получаем данные из полей ввода
		    int DBCball1_1 = Cball1_1;
		    int DBCball1_2 = Cball1_2;
		    
		 // подключаемся к БД
		    SQLiteDatabase db29 = dbHelper29.getWritableDatabase();
		    
		    
		      cv29.put("ball1_1", DBCball1_1);
		      cv29.put("ball1_2", DBCball1_2);
		      // вставляем запись
		      db29.insert(TablNamebd1+TablNamebd2, null, cv29); 
		    
		      // закрываем подключение к БД
		      dbHelper29.close();
	  }
}
Шапка лога с ошибкой

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

10-25 23:24:01.812: E/SQLiteLog(31997): (1) no such table: Февраль2012
10-25 23:24:01.818: E/AndroidRuntime(31997): FATAL EXCEPTION: main
10-25 23:24:01.818: E/AndroidRuntime(31997): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.p044_listclick/com.example.p044_listclick.tabl29}: android.database.sqlite.SQLiteException: no such table: Февраль2012 (code 1): , while compiling: SELECT * FROM Февраль2012
Первый пункт списка - "Февраль2016". Так как он был нажат первым, таблица успешно создалась, я с ней отработал, вышел в Первое активити со списком, и нажал на "Февраль2012". И упало...
и так двацть раз)

Ну не смог я найти, как реализовать автоматическое создание таблиц, понимаете? Вот как мне это сделать? не прописывать же в onCreate SQLTхелпера все возможные варианты таблиц?
Хочу, чтобы таблицы сами создавались по мере необходимости, с названием, равным названию пункта списка, но с одной структурой содержимого.

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

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

Сообщение Foenix » 25 окт 2014, 19:12

не могут таблицы и НЕ ДОЛЖНЫ создаваться по клику по каким бы то ни было пунктам списка! создавать надо строки в таблице, если это требуется по сценарию. Никаких "шаблонных таблиц" не существует и не должно существовать.
R.id.team

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

Irrumator
Сообщения: 25
Зарегистрирован: 08 окт 2014, 16:39

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

Сообщение Irrumator » 26 окт 2014, 18:12

Спасибо Фенечка, разобрался)

Sanek517s
Сообщения: 33
Зарегистрирован: 03 ноя 2014, 19:39

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

Сообщение Sanek517s » 03 дек 2014, 11:19

Подскажите, как совершать вывод из БД в какой-то textview ил editext.

finberg
Сообщения: 51
Зарегистрирован: 11 мар 2013, 14:20

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

Сообщение finberg » 04 дек 2014, 22:23

Sanek517s писал(а):Подскажите, как совершать вывод из БД в какой-то textview ил editext.
куда выводить будете? ListView ? ViewPager ? Конкретизируйте вопрос.

Sanek517s
Сообщения: 33
Зарегистрирован: 03 ноя 2014, 19:39

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

Сообщение Sanek517s » 04 дек 2014, 22:43

listview

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

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

Сообщение doter.ua » 05 дек 2014, 02:14

Sanek517s писал(а):listview
Если говорить про работу с курсором, то у него есть методы moveToFirst() и moveToNext(), которые позволяют пройти по массиву с выборкой (если запрос что-то вернул). В каждой итерации просто добавляете в массив элементы (если запрашивали 3 столбца, то в три массива закатываете по элементу) В конце работы у вас будут массивы с инфой. Дальнейшие действия на ваш выбор.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Sanek517s
Сообщения: 33
Зарегистрирован: 03 ноя 2014, 19:39

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

Сообщение Sanek517s » 05 дек 2014, 08:42

Знаком с этими методами, но приложение крашится при попытке записать данные в массив. Можете написать простенький пример записи?
Вот логи, если нужны. Приложение крашится менно там, где происходит запись в массив. На строке lst = cursor....

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

  if (cursor.moveToFirst()) // если курсор не пустой
        {
            for (int i = 0; i < cursor.getCount(); i++)
            {
                lst[i] = cursor.getString(cursor.getColumnIndex(DataBaseRecords.RECORDS)); // заполняем
                cursor.moveToNext();
            }
        }
        cursor.close();

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

12-05 07:42:50.997  15638-15638/myapp.wordsgame_version01_db E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:3606)
            at android.view.View.performClick(View.java:4211)
            at android.view.View$PerformClick.run(View.java:17446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at android.view.View$1.onClick(View.java:3601)
            at android.view.View.performClick(View.java:4211)
            at android.view.View$PerformClick.run(View.java:17446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at myapp.wordsgame_version01_db.RecordsActivity.btnGetDB(RecordsActivity.java:103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at android.view.View$1.onClick(View.java:3601)
            at android.view.View.performClick(View.java:4211)
            at android.view.View$PerformClick.run(View.java:17446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)

razmus
Сообщения: 82
Зарегистрирован: 26 мар 2013, 10:47

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

Сообщение razmus » 05 дек 2014, 10:13

Sanek517s писал(а):Знаком с этими методами, но приложение крашится при попытке записать данные в массив. Можете написать простенький пример записи?
Вот логи, если нужны. Приложение крашится менно там, где происходит запись в массив. На строке lst = cursor....

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

  if (cursor.moveToFirst()) // если курсор не пустой
        {
            for (int i = 0; i < cursor.getCount(); i++)
            {
                lst[i] = cursor.getString(cursor.getColumnIndex(DataBaseRecords.RECORDS)); // заполняем
                cursor.moveToNext();
            }
        }
        cursor.close();

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

12-05 07:42:50.997  15638-15638/myapp.wordsgame_version01_db E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:3606)
            at android.view.View.performClick(View.java:4211)
            at android.view.View$PerformClick.run(View.java:17446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at android.view.View$1.onClick(View.java:3601)
            at android.view.View.performClick(View.java:4211)
            at android.view.View$PerformClick.run(View.java:17446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at myapp.wordsgame_version01_db.RecordsActivity.btnGetDB(RecordsActivity.java:103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at android.view.View$1.onClick(View.java:3601)
            at android.view.View.performClick(View.java:4211)
            at android.view.View$PerformClick.run(View.java:17446)
            at android.os.Handler.handleCallback(Handler.java:725)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:153)
            at android.app.ActivityThread.main(ActivityThread.java:5297)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
            at dalvik.system.NativeStart.main(Native Method)
А у массива размера то хватает?

Sanek517s
Сообщения: 33
Зарегистрирован: 03 ноя 2014, 19:39

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

Сообщение Sanek517s » 05 дек 2014, 10:35

неа) как его обьявить?)

Ответить