Работа с базой данных SQLite в Android 4

Сегодня я немного расскажу о работе с БД SQLite в Android 4. Эта база данных уже есть в Андроиде и ее можно использовать из коробки.
Будем создавать небольшое приложения для сохранения логина и пароля в БД.

public class DbOpenHelper extends SQLiteOpenHelper{

  private static final int DB_VERSION = 1; // Номер версии БД приложения
  private static final String DB_NAME = "test"; // Имя БД

  public static final String TABLE_NAME = "users"; // Имя Таблицы
  public static final String LOGIN = "login"; // Колонка "login"
  public static final String PASSW = "passw"; // Колонки "passw"
  private static final String CREATE_TABLE = "create table " + TABLE_NAME + " ( _id integer primary key autoincrement, "
      + LOGIN + " TEXT, " + PASSW + " TEXT)"; // Запрос на создание таблицы в БД

  public DbOpenHelper(Context context) { // Конструктор
    super(context, DB_NAME, null,DB_VERSION);
  }

  @Override
  public void onCreate(SQLiteDatabase sqLiteDatabase) { // Cоздаем таблицу
    sqLiteDatabase.execSQL(CREATE_TABLE);
  }

  @Override
  public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { // Здеь можно добавить код на обновление данных или удаление старой таблицы
  }
}

Теперь создаем Activity с 2-мя EditText и Button для сохранения логина и пароля в БД

public class TestActivity extends Activity {

  EditText loginEditText = null;
  EditText passEditText = null;
  Button saveButton = null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    loginEditText = (EditText) findViewById(R.id.login); // Находим в разметке 1-й EditText
    passEditText = (EditText) findViewById(R.id.passw); // Находим в разметке 2-й EditText
    saveButton = (Button) findViewById(R.id.btn1); // Находим в разметке Button

    saveButton.setOnClickListener(new View.OnClickListener() { // Обрабатываем нажатие на кнопку saveButton
      public void onClick(View view) {
        DbOpenHelper dbOpenHelper = new DbOpenHelper(TestActivity.this); // Создаем объект класса DbOpenHelper и передаем Context конструктору
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put(DbOpenHelper.LOGIN,loginEditText.getText().toString()); // Вставляем логин в обертку ContentValues cv
        cv.put(DbOpenHelper.PASSW,passEditText.getText().toString()); // Вставляем пароль ContentValues cv
        db.insert(DbOpenHelper.TABLE_NAME,null,cv); // Сохраняем данные в таблице БД
        db.close(); // Закрываем соединение с БД
        // Очищаем поля в EditText
loginEditText.setText("");
        passEditText.setText("");
      }
    });
  }
}

Вначале мы создаем экземляр класса DbOpenHelper, который создает саму базу и таблицы. Затем получаем объект SQLiteDatabase, методом insert происходит запись. ContentValues это некая обертка над данными, которые будут записаны в бд. В методе put первым аргументом является имя столбца, а вторым сами данные которые будут записаны в столбец, на языке SQL это выглядит так:
INSERT INTO users ( 'login','passw') VALUES ('somelogin','somepass')