SQLite - это система управления реляционными базами данных, разработанная D. Ричард Хипп на языке программирования C, который не похож на другие системы управления базами данных, а не на механизм обработки данных клиент-сервер. SQLite следует свойствам ACID и очень эффективен для выполнения стандартов SQL. Он очень популярен для программного обеспечения, которому требуется встроенная база данных для их локального хранилища.

Более того, это наиболее широко распространенный механизм баз данных. По умолчанию он включен в различные операционные системы. Код SQLite размещен в Fossil, распределенной системе контроля версий, которая сама построена на базе данных SQLite.

С этими ключевыми замечаниями здесь мы узнаем, как вставлять данные в базу данных SQLite при их реализации в операционной системе Android. Чтобы узнать это, мы будем использовать Android Studio, на которой мы сосредоточимся только на внутреннем коде, предполагая, что мы достаточно хороши для кодирования макета. Итак, предполагая, что мы разработали макет для вставки, который включает имя пользователя, контакт и идентификатор электронной почты, все это поля ввода текста, мы начнем.

Шаг 1. Создайте класс контракта:

Контрактный класс будет работать как контейнер для всех констант при использовании SQLite, это поможет нам в будущем легко вносить изменения в базу данных. В случае, если нам нужно иметь дело с более чем одной таблицами, мы должны создать отдельные статические внутренние классы в классе контракта для каждой таблицы:

public class UserContract{
    public static abstract class NewUserInfo{
        // define all the needed constants here
    }
}

Согласно нашим предположениям, мы должны хранить три поля пользователя: имя пользователя, контакт пользователя и адрес электронной почты пользователя. Итак, давайте определим их как константы, чтобы мы могли легко получить к ним доступ во всех наших задачах:

public class UsrContract{
    public static abstract class NewUserInfo{
	// define all the needed constants here
	public static final String USER_NAME = "user_name";  //works as key-value pair
	public static final String USER_CONTACT = "user_contact";
	public static final String USER_MAIL = "user_mail";
	//define a table name where these columns/attributes will be stored:
	public static final String TABLE_NAME = "newUserInfo";
   }
}

Шаг 2. Создайте вспомогательный класс базы данных:

Создайте еще один класс для определения и выполнения операций с базой данных, для этого мы должны расширить класс SQLiteOpenHelper как:

public class UserDbHelper extends SQLiteOpenHelper{
}

здесь мы должны переопределить два метода: onCreate () и onUpgrade (), метод onCreate () использует объект SQLiteDatabase в качестве аргумента, тогда как в дополнение к объекту SQLiteDatabase, onUpgrade () использует oldVersion и newVersion (оба целые числа) в качестве аргументов.

public class UserDbHelper extends SQLiteOpenHelper{
    @override
    public void onCreate(SQLiteDatabase db){
  
    }
    @override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    }
}

Если таблица еще не существует, вызывается метод onCreate (), и если мы снова выполняем операции с базой данных, он проверяет версию и вызывает метод onUpgrade (). Более того, класс требует конструктора по умолчанию с объектом Context аргумента. Таким же образом мы должны вызвать конструктор суперкласса, который содержит четыре аргумента: i.) Объект контекста, ii.) Имя базы данных, iii.) Объект CursorFactory и iv.) Версию базы данных.

public class UserDbHelper extends SQLiteOpenHelper{
   private static final String DATABASE_NAME = "userInfoDb";
      private static final int DATABASE_VERSION = 1;
      // defining constructor
      public UserDbHelper(Context context) {
      super(context, DATABASE_NAME, null, DATABASE_VERSION);
   }
   @override
   public void onCreate(SQLiteDatabase db){
   }
   @override
   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
  }

До сих пор база данных создается успешно, теперь для создания таблицы мы должны использовать объект SQLiteDatabase в методе onCreate (). Поскольку создание таблицы в базе данных требует использования запроса, мы можем либо написать запрос внутри метода, либо присвоить его переменной и использовать эту переменную. Второй вариант звучит неплохо, поэтому мы воспользуемся следующим:

public class UserDbHelper extends SQLiteOpenHelper{
   private static final String CREATE_TABLE = "CREATE TABLE "+ UsrContract.NewUserInfo.TABLE_NAME+"  
    ("+UsrContract.NewUserInfo.USER_NAME+" TEXT, "+UsrContract.NewUserInfo.USER_CONTACT+" TEXT, "+UsrContract.NewUserInfo.USER_MAIL+" TEXT);";  
   ...
   @override
   public void onCreate(SQLiteDatabase db){
       db.execSQL(CRATE_TABLE);
       Log.d("Status: ", "table created successfully.");
   }
   ...
}

Теперь создайте метод для вставки данных в таблицу: в базе данных SQLite данные вставляются в виде значений маркеров, где ключи представлены именами столбцов, поэтому мы должны создать объект ContentValues:

public class UserDbHelper extends SQLiteOpenHelper{
   ...
   public void insertData(String name, String contact, String mail, SQLiteDatabase db){
      ContentValues contentValues = new ContentValues();
      contentValues.put("UsrContract.NewUserInfo.USER_NAME","name");
      contentValues.put("UsrContract.NewUserInfo.USER_CONTACT","contact");
      contentValues.put("UsrContract.NewUserInfo.USER_MAIL","mail");
      db.insert(UsrContract.NewUserInfo.TABLE_NAME, null, contentValues);
      //arguments are as: insert(String table, String NullColumnHack, ContentValues values)
      Log.d("Status:", "Data inserted successfully.");
    }
    ...
}

Шаг 3. Реализация onClick ():

Теперь в файле макета (java-файл макета) на кнопке отправки мы должны выполнить вышеуказанный запрос. Это можно сделать, сначала создав объект вспомогательного класса базы данных, а затем реализовав на нем метод addInformations () с аргументами:

public class MainActivity extends Activity{
	Context context = this;
	UserDbHelper userDbHelper;
	SQLitedataabase db;
        EditText etUserName, etUserContact, etUserMail;
	@override
	protected void onCreate(Bundle SavedInstanceState) {
		...
	}
	public void insertData(View v){
		String userName = etUserName.getText().toString();
		String userContact = etUserContact.getText().toString();
		String userMail = etUserMail.getText().toString();
		userDbHelper = new UserDbHelper(context);
		db = userDbHelper.getWritableDatabase();
		userDbHelper.addInformations(userName, userContact, userMail, db);
		userDbHelper.close();
	}
}

До сих пор мы узнали, как вставлять данные в базу данных SQLite при разработке приложения для Android с SQLite. В следующем блоге мы изучим еще один запрос по SQLite.