Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 10.04.2014 | Доступ: свободный | Студентов: 6839 / 1236 | Длительность: 14:18:00
Специальности: Программист
Самостоятельная работа 10:

Работа с базами данных в Android

< Лекция 7 || Самостоятельная работа 10: 123 || Лекция 8 >

17.5 Заключение

В работе на примере простого приложения рассмотрели выполнение основных операций с базами данных: создание, добавление записей, просмотр всех записей таблицы, удаление. Для выполнения выборок из таблицы, необходимо познакомиться с основами построения запросов в SQLite и сформировать запрос для метода query() класса SQLiteDatabase.

package com.example.lab7_1_sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class MyOpenHelper extends SQLiteOpenHelper {
  
  public String TABLE_NAME="first_table";
  public String FIELD_NAME_1="first_field";
  public String FIELD_NAME_2="second_field";
  
  MyOpenHelper(Context ct, String nm, SQLiteDatabase.CursorFactory cf, int vs){
    super(ct, nm, cf, vs);
  }
  
  @Override
  public void onUpgrade(SQLiteDatabase DB, int oldVersion, int newVersion) {
    Log.d("myLogs","| Upgrade |"+DB.toString());
  }

  @Override
  public void onCreate(SQLiteDatabase DB) {
    Log.d("myLogs","| Create |"+DB.toString());
    String query="create table " + TABLE_NAME + " ( _id integer primary key 
      autoincrement, " + FIELD_NAME_1 + " TEXT, " + FIELD_NAME_2 + " TEXT)";
    DB.execSQL(query);
  }
}
    
Листинг 17.1. Класс MyOpenHelper

package com.example.lab7_1_sqlite;

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

public class SQLiteActivity extends Activity {
  
  MyOpenHelper myHelper = null;
  EditText field1, field2, result;
  SQLiteDatabase DB;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sqlite);

    myHelper=new MyOpenHelper(this, "myDB", null, 1);

    field1=(EditText)findViewById(R.id.field1);
    field2=(EditText)findViewById(R.id.field2);
    result=(EditText)findViewById(R.id.dbResult);
  }
  
  public void insertIntoDatabase(View v){
      
    if(!field1.getText().toString().equals("") && 
        !field2.getText().toString().equals("")){
      Log.d("myLogs","Insert INTO DB ("+field1.getText().toString()+ "," + field2.getText().toString()+")");
      
      DB = myHelper.getWritableDatabase();
      String query="create table if not exist " + myHelper.TABLE_NAME + 
      " (_id integer primary key autoincrement, " + myHelper.FIELD_NAME_1 + " TEXT, " + myHelper.FIELD_NAME_2 + " TEXT)";

      ContentValues CV = new ContentValues();
      CV.put(myHelper.FIELD_NAME_1,field1.getText().toString());
      CV.put(myHelper.FIELD_NAME_2,field2.getText().toString());
      DB.insert(myHelper.TABLE_NAME,null,CV);
      DB.close();
      field1.setText("");
      field2.setText("");
    }
  }

  public void readDatabase(View v){
    
    result.setText("");
  
    Log.d("myLogs","READ FROM DB");
    DB = myHelper.getReadableDatabase();
    
    String columns[]={"_id",myHelper.FIELD_NAME_1, myHelper.FIELD_NAME_2};
    Cursor cursor=DB.query(myHelper.TABLE_NAME, columns, null, null, null, 
    null, "_id");
    if(cursor!=null){
      cursor.moveToFirst();
      if (cursor.moveToFirst()) {
        do {
          result.setText(result.getText().toString()+ "\n" + 
                cursor.getString(0) + ") " + cursor.getString(1) + "," + cursor.getString(2));
        } while (cursor.moveToNext());
      }
    }
      
    DB.close();
  }

  public void deleteDatabase(View v){
    Log.d("myLogs","Delete Database");
    DB = myHelper.getWritableDatabase();
     
    DB.delete(myHelper.TABLE_NAME, null, null);
    DB.close();
  }
}
    
Листинг 17.2. Класс SQLiteActivity
< Лекция 7 || Самостоятельная работа 10: 123 || Лекция 8 >
Марат Нуриджанян
Марат Нуриджанян

Пример: Скачать среду можно с сайта для разработчиков Android (http://developer.android.com/sdk/index.html).

Там скачать можно только Android Studio

Владимир Каункин
Владимир Каункин

В самостоятельной работе 2 в примере решения задания некорректно загадывается число (в двух местах), выбирая случайное целое число из диапазона [0, 99] вместо [1, 100], как того требует условие. Кроме того, загадывание числа всё таки лучше вынести в отдельный метод, как мне кажется.