SQLite, помогите разобраться

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
panchsjr
Сообщения: 7
Зарегистрирован: 08 июл 2014, 20:45

SQLite, помогите разобраться

Сообщение panchsjr » 08 июл 2014, 21:13

Здравствуйте, начну с того что я очень зеленый НОВИЧЕК и мне не совсем повезло с руководителем практики, пусть даже тема очень интересная и есть желание заниматься ею дальше. Задание построено следующим образом, необходимо прикрутить к приложению SQLite базу и чтобы можно было добавлять, удалять, изменять и обновлять данные и чтобы результат выводился в самом приложении, например через объект лист или грид, но я еще не совсем понимаю, через что лучше и проще, поэтому я обращаюсь к вам, с целью, что вы мне посоветуете как это сделать и дадите всевозможные подсказки, очень буду рад любым сообщениям. Посмотрел видеоуроки по работе с базами, все подробно описывается, но там выводит все в лог, что не очень подходит для меня.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: SQLite, помогите разобраться

Сообщение altwin » 08 июл 2014, 22:46

от сюда: http://startandroid.ru/ru/uroki/vse-uro ... qlite.html и далее по списку...
Изображение

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 июл 2014, 23:59

да нет, вначале лучше сюда http://developer.android.com
R.id.team

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

panchsjr
Сообщения: 7
Зарегистрирован: 08 июл 2014, 20:45

Re: SQLite, помогите разобраться

Сообщение panchsjr » 09 июл 2014, 00:41

Меня бы мордой ткнуть в код, где продемонстрирован пример вывода данных из базы в лист ((

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 09 июл 2014, 00:50

это есть в уроках, вам ссылку дали. Уроки лучше подряд проходить. Но имей ввиду -они уже устарели, некоторые методы объявлены как deprecated.
А редактирование обычно делается через диалоги по клику на листвью.
По ссылке что я дала зайди в раздел дизайна и хотя бы посмотри картинки - как все должно выглядеть. Свое лучшше тут не изобретать...
R.id.team

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

panchsjr
Сообщения: 7
Зарегистрирован: 08 июл 2014, 20:45

Re: SQLite, помогите разобраться

Сообщение panchsjr » 09 июл 2014, 10:40

Всем сапсибо за участие, но для меня еще многое не понятно, буду разбираться...

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 09 июл 2014, 12:07

потихоньку начинай делать - такой путь все проходят, разберемся и помочь никто не отказывается)
R.id.team

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

panchsjr
Сообщения: 7
Зарегистрирован: 08 июл 2014, 20:45

Re: SQLite, помогите разобраться

Сообщение panchsjr » 09 июл 2014, 12:55

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

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

package minimal.database;

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, btnUpd, btnDel;
  EditText etName, etEmail, etID;

  DBHelper dbHelper;

  /** Called when the activity is first created. */
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_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);

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

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

    etName = (EditText) findViewById(R.id.etName);
    etEmail = (EditText) findViewById(R.id.etEmail);
    etID = (EditText) findViewById(R.id.etID);

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

  public void onClick(View v) {

    // создаем объект для данных
    ContentValues cv = new ContentValues();

    // получаем данные из полей ввода
    String name = etName.getText().toString();
    String email = etEmail.getText().toString();
    String id = etID.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("email", email);
      // вставляем запись и получаем ее 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 emailColIndex = c.getColumnIndex("email");

        do {
          // получаем значения по номерам столбцов и пишем все в лог
          Log.d(LOG_TAG,
              "ID = " + c.getInt(idColIndex) + ", name = "
                  + c.getString(nameColIndex) + ", email = "
                  + c.getString(emailColIndex));
          // переход на следующую строку
          // а если следующей нет (текущая - последняя), то 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;
    case R.id.btnUpd:
      if (id.equalsIgnoreCase("")) {
        break;
      }
      Log.d(LOG_TAG, "--- Update mytabe: ---");
      // подготовим значения для обновления
      cv.put("name", name);
      cv.put("email", email);
      // обновляем по id
      int updCount = db.update("mytable", cv, "id = ?",
          new String[] { id });
      Log.d(LOG_TAG, "updated rows count = " + updCount);
      break;
    case R.id.btnDel:
      if (id.equalsIgnoreCase("")) {
        break;
      }
      Log.d(LOG_TAG, "--- Delete from mytabe: ---");
      // удаляем по id
      int delCount = db.delete("mytable", "id = " + id, null);
      Log.d(LOG_TAG, "deleted rows count = " + delCount);
      break;
    }
    // закрываем подключение к БД
    dbHelper.close();
  }

  class DBHelper extends SQLiteOpenHelper {

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

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

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

    }
  }

}
Вложения
Безымянный.jpg
Безымянный.jpg (70.3 КБ) 4531 просмотр

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 09 июл 2014, 14:15

придуманный дизайн зародился с десктопа) верхняя штука не нужна с редактированиями и прочим, это только занимает экран. Картинки с сайта девелоперов, ссылку я давала - ты не смотрел, увы.
Кнопки нужно выносить в экшенбар, удаление реализовать путем выбора пунктов списка и кнопок на э.б. Кнопку "создать запись" туда же. Редактировать удобно было бы по нажатию пункта списка в диалоговом окне (удобно, быстро и интуитивно ясно).
Остановись сейчас на том, что просто создашь список на весь экран, в котором покажешь данные из таблицы.
Если используешь эмулятор, то заполнить таблицу пустую просто - скопируй БД из эмуля на комп, открой любым менеджером и добавь туда строчек.
Сделай пока это. Как показать курсор в списке - есть урок. ТАм много уже устаревшегО, но хотя бы это повтори у себя..
тебе понадобится так же кастомизация строк в списке, т.к. у тебя полей в таблице я смоттрю несколько. Урок тоже есть.
Класс бд вынеси в отдельный файл сразу.
Работы вагон не хватайся за все сразу. :)
R.id.team

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 07 авг 2014, 16:49

ВСЕМ ПРИВЕТ!!. Я новичок.Помогите с кодом, интерфейс похож как у предыдущего человека, смысл вот в чем в первом активити, заводятся новые записи в бд, редактирование, чтение, сортировка т.д., в БД две таблицы, как по урокам одна с данными про человека - имя, участок, айди должности, вторая таблица - имя должности, зарплата, и айди объявленные. Все как бы сделано правильно. Реализован класс БД отдельно, прописаны методы для кнопок добавления, редактирования, удаления, сортировок, выборок, на кнопке чтения забиндовано второе активити, при нажатии в онкриэйт, выполняется код который должен читать данные с БД, и виде списка в листвью должен их загружать, но почему то кричит ошибку в объявленном собственном классе курсорлоадера, в котором вызывается метод для получения всех данных из дб : Нулл поинтер ексептион, не могу понять почему он не получает данные с БД, БД создается, записи в БД есть, но в список не загружается, помогите пожайлуста, уже не первый день сижу(( Я хочу и другие методы перенаправить на это активити, чтобы в список передавались именно те данные при отборе. Извините за грамматику..
Вложения
Безымянный.png
Безымянный.png (241.97 КБ) 4456 просмотров
Безымянный.png
Безымянный.png (200.84 КБ) 4456 просмотров

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: SQLite, помогите разобраться

Сообщение altwin » 07 авг 2014, 17:13

whitestars писал(а):ВСЕМ ПРИВЕТ!!. Я новичок.Помогите с кодом, интерфейс похож как у предыдущего человека, смысл вот в чем в первом активити, заводятся новые записи в бд, редактирование, чтение, сортировка т.д., в БД две таблицы, как по урокам одна с данными про человека - имя, участок, айди должности, вторая таблица - имя должности, зарплата, и айди объявленные. Все как бы сделано правильно. Реализован класс БД отдельно, прописаны методы для кнопок добавления, редактирования, удаления, сортировок, выборок, на кнопке чтения забиндовано второе активити, при нажатии в онкриэйт, выполняется код который должен читать данные с БД, и виде списка в листвью должен их загружать, но почему то кричит ошибку в объявленном собственном классе курсорлоадера, в котором вызывается метод для получения всех данных из дб : Нулл поинтер ексептион, не могу понять почему он не получает данные с БД, БД создается, записи в БД есть, но в список не загружается, помогите пожайлуста, уже не первый день сижу(( Я хочу и другие методы перенаправить на это активити, чтобы в список передавались именно те данные при отборе. Извините за грамматику..
запустите профайлер и посмотрите, что у вас в переменной db.
Изображение

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 07 авг 2014, 18:47

ссылки в подписи.
R.id.team

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 12:15

по ссылкам прошел вебинар, но так и не смог исправить корень зла, строку я вижу в которой ошибка, но как ошибку исправить я не знаю, что там не инициализировано, нулл и как убрать этот нулл не знаю?? помогите именно с кодом... что я не объявляю, не пойму

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 12:58

я запусил дебагер, в строке с ошибкой, там все важные элементы нулл почему, и как сделать чтобы был не нулл?
Вложения
Безымянный.png
Безымянный.png (189.52 КБ) 4435 просмотров

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: SQLite, помогите разобраться

Сообщение alexmx » 08 авг 2014, 14:43

Вы хотя бы лог покажите и код, а там глядишь люди и помогут

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 14:45

та зачем код, кому он нужен
R.id.team

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

Аватара пользователя
alexmx
Сообщения: 193
Зарегистрирован: 10 мар 2014, 08:14

Re: SQLite, помогите разобраться

Сообщение alexmx » 08 авг 2014, 14:53

Просто кое кто меня носом тыкал в ошибку которая в логах показана)))

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 14:57

ну дык человек жеж сам может посмотреть.......... я надеюсь
R.id.team

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

whitestars
Сообщения: 33
Зарегистрирован: 07 авг 2014, 13:09

Re: SQLite, помогите разобраться

Сообщение whitestars » 08 авг 2014, 14:59

Ну сверху показан скрин с логом ребят...

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

Re: SQLite, помогите разобраться

Сообщение Foenix » 08 авг 2014, 15:01

Солнце, ну у меня в ссылке написано все что нужно сделать, чтоб найти ошибку. Вот прям первая. Это самая простая ошибка, которую легко найти.
Делай и спрашивай.
R.id.team

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

Ответить