Я новичок в Android, и мне нужно создать приложение, где мне нужно использовать базу данных SQLite. Я не очень хорошо оборудован SQLite.
Не могли бы вы рассказать мне, что цель и использование класса SQLiteOpenHelper
, и предоставить простой пример создания и ввода базы данных?
Класс помощников Sqlite помогает нам управлять созданием базы данных и управлением версиями.
SQLiteOpenHelper заботится обо всех действиях по управлению базами данных. Чтобы использовать его,
1.Override onCreate(), onUpgrade()
методы SQLiteOpenHelper
. Необязательно переопределить метод onOpen().
2. Используйте этот подкласс для создания либо читаемой, либо записываемой базы данных и используйте четыре метода API SQLiteDatabase insert(), execSQL(), update(), delete()
для создания, чтения, обновления и удаления строк вашей таблицы.
Пример создания таблицы MyEmployees и для выбора и вставки записей:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "DBName";
private static final int DATABASE_VERSION = 2;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table MyEmployees
( _id integer primary key,name text not null);";
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
// Method is called during an upgrade of the database,
@Override
public void onUpgrade(SQLiteDatabase database,int oldVersion,int newVersion){
Log.w(MyDatabaseHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS MyEmployees");
onCreate(database);
}
}
Теперь вы можете использовать этот класс, как показано ниже,
public class MyDB{
private MyDatabaseHelper dbHelper;
private SQLiteDatabase database;
public final static String EMP_TABLE="MyEmployees"; // name of table
public final static String EMP_ID="_id"; // id value for employee
public final static String EMP_NAME="name"; // name of employee
/**
*
* @param context
*/
public MyDB(Context context){
dbHelper = new MyDatabaseHelper(context);
database = dbHelper.getWritableDatabase();
}
public long createRecords(String id, String name){
ContentValues values = new ContentValues();
values.put(EMP_ID, id);
values.put(EMP_NAME, name);
return database.insert(EMP_TABLE, null, values);
}
public Cursor selectRecords() {
String[] cols = new String[] {EMP_ID, EMP_NAME};
Cursor mCursor = database.query(true, EMP_TABLE,cols,null
, null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor; // iterate to get each value.
}
}
Теперь вы можете использовать класс MyDB в своей деятельности, чтобы иметь все операции с базой данных. Созданные записи помогут вам вставить значения аналогично, вы можете иметь свои собственные функции для обновления и удаления.
Следующие ссылки помогут вам
Класс помощника базы данных:
Вспомогательный класс для управления созданием базы данных и управлением версиями.
Вы создаете подкласс, реализующий onCreate(SQLiteDatabase)
, onUpgrade(SQLiteDatabase, int, int)
и необязательно onOpen(SQLiteDatabase)
, и этот класс заботится о том, чтобы открыть базу данных, если она существует, создавая ее, если это не так, и, при необходимости, обновляя ее. Транзакции используются, чтобы убедиться, что база данных всегда находится в разумном состоянии.
Этот класс упрощает реализацию ContentProvider
для отсрочки открытия и обновления базы данных до ее первого использования, чтобы избежать блокировки запуска приложений при длительных обновлениях баз данных.
Вам нужно больше ссылаться на эту ссылку Sqlite Helper
С помощью класса Helper вы можете получить доступ к базе данных SQLite и выполнять различные операции над ним, переопределяя методы onCreate() и onUpgrade().
Класс DBHelper - это то, что обрабатывает открытие и закрытие баз данных sqlite, а также создание и обновление, и достойная статья о том, как все это работает, здесь. Когда я начал андроид, это было очень полезно (однако я был objective-c в последнее время и забыл, что большинство из них будет использоваться.