Управління даними в ОС Android за допомогою СУБД SQLite

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Мережеві операційні системи

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра ЕОМ Лабораторна робота №5 з дисципліни: «Мережні операційні системи» на тему: «Управління даними в ОС Android за допомогою СУБД SQLite» Львів – 2017 Мета: Оволодіти навичками роботи з СУБД SQLite в ОС Android. Завдання: Створити базу даних навчальних предметів біжучого семестру (назва предмету, обсяг предмету (навчальні години), викладач, розклад, показники успішності) та тестову програму перегляду і редагування записів бази даних. Основні методи для роботи з SQLite в ОС Android: execSQL(String st): виклик запиту для бази даних; st – сам SQL запит.  insert(String table, String nullColumnHack, ContentValues values): додавання запису до таблиці.  update(String table, ContentValues values, String whereClause, String[] whereArgs): обнова запису в базі даних  delete(String table, String whereClause, String[] whereArgs): видалення строки в базі даних  rawQuery(String sql, String[] selectionArgs); query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy): виконання SQL запитів. Повертає елемент Cursor.   Робоча програма створює базу даних та таблицю автоматично. Ми працюємо із цією таблицею. Є можливість додати дані, видалити їх, переглянути та редагувати. Деякі з скрінів роботи програми зображено нижче.  Рис. 1. Головна сторінка програми  Рис. 2. Розділ «Перегляд інформації про предмет» Лістинг: Subjects.java package com.knowleen.lab5and; public class Subjects { private int id; private String subject; private int hours; private String teacher; private String days; private int marks; public Subjects(){} public Subjects(String s, int h, String t, String d, int m) { super(); this.subject = s; this.hours = h; this.teacher = t; this.days = d; this.marks = m; } //getters & setters @Override public String toString() { return "Предмет: " + subject + "\nГодин: " + hours + "\nВикладач: " + teacher + "\nНавчальні дні: " + days + "\nСередня оцінка: " + marks; } public void setId(int id) { this.id = id; } public int getId() { return id; } public String getSubject() { return subject; } public String getDays() { return days; } public String getTeacher() { return teacher; } public int getHours() { return hours; } public int getMarks() { return marks; } public void setSubject(String subject) { this.subject = subject; } public void setHours(int hours) { this.hours = hours; } public void setTeacher(String teacher) { this.teacher = teacher; } public void setDays(String days) { this.days = days; } public void setMarks(int marks) { this.marks = marks; } } DataBaseHelper.java package com.knowleen.lab5and; import java.util.LinkedList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DatabaseHelper extends SQLiteOpenHelper { // Database Version private static final int DATABASE_VERSION = 1; // Database Name private static final String DATABASE_NAME = "SubjectsDB3"; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // SQL statement to create table String CREATE_SUBJ_TABLE = "CREATE TABLE subj ( " + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "subject TEXT, "+ "hours INTEGER, "+"teacher TEXT, "+"days TEXT, "+ "marks INTEGER )"; // create table db.execSQL(CREATE_SUBJ_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Drop older table if existed db.execSQL("DROP TABLE IF EXISTS subj"); // create fresh table this.onCreate(db); } //--------------------------------------------------------------------- // Name of table private static final String TABLE_SUBJECTS = "subj"; // Columns private static final String KEY_ID = "id"; private static final String KEY_SUBJECT = "subject"; private static final String KEY_HOURS = "hours"; private static final String KEY_TEACHER = "teacher"; private static final String KEY_DAYS = "days"; private static final String KEY_MARKS = "marks"; private static final String[] COLUMNS = {KEY_ID,KEY_SUBJECT,KEY_HOURS,KEY_TEACHER,KEY_DAYS,KEY_MARKS}; public void addSubject(Subjects subjects){ // 1. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); // 2. create ContentValues to add key "column"/value ContentValues values = new ContentValues(); values.put(KEY_SUBJECT, subjects.getSubject()); values.put(KEY_HOURS, subjects.getHours()); values.put(KEY_TEACHER, subjects.getTeacher()); values.put(KEY_DAYS, subjects.getDays()); values.put(KEY_MARKS, subjects.getMarks()); // 3. insert db.insert(TABLE_SUBJECTS, // table null, //nullColumnHack values); // key/value -> keys = column names/ values = column values // 4. close db.close(); } public Subjects getSubject(int id){ // 1. get reference to readable DB SQLiteDatabase db = this.getReadableDatabase(); // 2. build query Cursor cursor = db.query(TABLE_SUBJECTS, // a. table COLUMNS, // b. column names " id = ?", // c. selections new String[] { String.valueOf(id) }, // d. selections args null, // e. group by null, // f. having null, // g. order by null); // h. limit // 3. if we got results get the first one if (cursor != null) cursor.moveToFirst(); // 4. build object Subjects subjects = new Subjects(); subjects.setId(Integer.parseInt(cursor.getString(0))); subjects.setSubject(cursor.getString(1)); subjects.setHours(Integer.parseInt(cursor.getString(2))); subjects.setTeacher(cursor.getString(3)); subjects.setDays(cursor.getString(4)); subjects.setMarks(Integer.parseInt(cursor.getString(5))); // 5. return return subjects; } public Subjects getSubject(String name){ // 1. get reference to readable DB SQLiteDatabase db = this.getReadableDatabase(); // 2. build query Cursor cursor = db.query(TABLE_SUBJECTS, // a. table COLUMNS, // b. column names " subject = ?", // c. selections new String[] { name }, // d. selections args null, // e. group by null, // f. having null, // g. order by null); // h. limit // 3. if we got results get the first one if (cursor != null) cursor.moveToFirst(); // 4. build object Subjects subjects = new Subjects(); subjects.setId(Integer.parseInt(cursor.getString(0))); subjects.setSubject(cursor.getString(1)); subjects.setHours(Integer.parseInt(cursor.getString(2))); subjects.setTeacher(cursor.getString(3)); subjects.setDays(cursor.getString(4)); subjects.setMarks(Integer.parseInt(cursor.getString(5))); return subjects; } // Get All public List<Subjects> getAll() { List<Subjects> subjectses = new LinkedList<Subjects>(); // 1. build the query String query = "SELECT * FROM " + TABLE_SUBJECTS; // 2. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(query, null); // 3. go over each row, build and add it to list Subjects subjects = null; if (cursor.moveToFirst()) { do { subjects = new Subjects(); subjects.setId(Integer.parseInt(cursor.getString(0))); subjects.setSubject(cursor.getString(1)); subjects.setHours(Integer.parseInt(cursor.getString(2))); subjects.setTeacher(cursor.getString(3)); subjects.setDays(cursor.getString(4)); subjects.setMarks(Integer.parseInt(cursor.getString(5))); // Adding subjectses.add(subjects); } while (cursor.moveToNext()); } // return sub return subjectses; } // Updating public int updateSubject(Subjects subjects, String name) { // 1. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); // 2. create ContentValues to add key "column"/value ContentValues values = new ContentValues(); values.put(KEY_SUBJECT, subjects.getSubject()); values.put(KEY_HOURS, subjects.getHours()); values.put(KEY_TEACHER, subjects.getTeacher()); values.put(KEY_DAYS, subjects.getDays()); values.put(KEY_MARKS, subjects.getMarks()); // 3. updating row int i = db.update(TABLE_SUBJECTS, //table values, // column/value KEY_SUBJECT+" = ?", // selections new String[] { name }); //selection args // 4. close db.close(); return i; } public void deleteSubject(String name) { // 1. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); // 2. delete db.delete(TABLE_SUBJECTS, KEY_SUBJECT+" = ?", new String[] { name }); // 3. close db.close(); } // Deleting public void deleteSubject(Subjects subjects) { // 1. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); // 2. delete db.delete(TABLE_SUBJECTS, KEY_ID+" = ?", new String[] { String.valueOf(subjects.getId()) }); // 3. close db.close(); } // making spinner items public String[] makeSpinnet(){ String query = "SELECT * FROM " + TABLE_SUBJECTS; int i; // 2. get reference to writable DB SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(query, null); cursor.moveToFirst(); i = 0; //making array to write spinner item's String[] result = new String[cursor.getCount()]; cursor.moveToFirst(); do { result[i] = cursor.getString(1); i++; } while (cursor.moveToNext()); return result; } } StartActivity.java package com.knowleen.lab5and; import android.content.Intent; public class StartActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); } public void addSub(View view) { Intent intent = new Intent(this, AddSubject.class); startActivity(intent); } public void delSub(View view) { Intent intent = new Intent(this, DeleteSubject.class); startActivity(intent); } public void watchSub(View view) { Intent intent = new Intent(this, WatchSubject.class); startActivity(intent); } public void editSub(View view) { Intent intent = new Intent(this, EditSubject.class); startActivity(intent); } } AddSubject.java package com.knowleen.lab5and; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class AddSubject extends AppCompatActivity { EditText subject, hours, teacher, days, marks; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_subject); subject = (EditText) findViewById(R.id.editText2); hours = (EditText) findViewById(R.id.editText3); teacher = (EditText) findViewById(R.id.editText5); days = (EditText) findViewById(R.id.editText7); marks = (EditText)findViewById(R.id.editText8); } public void adding(View view) { DatabaseHelper db = new DatabaseHelper(this); db.addSubject(new Subjects(subject.getText().toString(), Integer.parseInt(hours.getText().toString()), teacher.getText().toString(), days.getText().toString(), Integer.parseInt(marks.getText().toString()))); Toast.makeText(this, "Предмет додано!", Toast.LENGTH_LONG).show(); subject.setText(""); hours.setText(""); teacher.setText(""); days.setText(""); marks.setText(""); } } DeleteSubject.java package com.knowleen.lab5and; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import org.w3c.dom.Text; public class DeleteSubject extends AppCompatActivity { String data = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_delete_subject); DatabaseHelper db = new DatabaseHelper(this); //адаптер для випадаючого меню final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, db.makeSpinnet()); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner spinner = (Spinner) findViewById(R.id.spinner); spinner.setAdapter(adapter); // натиск на пункт з випадаючого меню spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //пишемо назву елементу data = adapter.getItem(position); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } //видаляємо елемент по назві public void deleting(View view) { DatabaseHelper db = new DatabaseHelper(this); db.deleteSubject(data); Toast.makeText(this, "Предмет видалено!", Toast.LENGTH_LONG).show(); this.recreate(); } } EditSubject.java package com.knowleen.lab5and; import android.support.v7.app.AppCompatActivity; public class EditSubject extends AppCompatActivity { EditText subject, hours, teacher, days, marks; String data = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_subject); subject = (EditText) findViewById(R.id.editText2); hours = (EditText) findViewById(R.id.editText3); teacher = (EditText) findViewById(R.id.editText5); days = (EditText) findViewById(R.id.editText7); marks = (EditText)findViewById(R.id.editText8); final DatabaseHelper db = new DatabaseHelper(this); //адаптер для випадаючого меню final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, db.makeSpinnet()); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner spinner = (Spinner) findViewById(R.id.spinner5); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //пишемо назву елементу data = adapter.getItem(position); Subjects sub = db.getSubject(data); subject.setText(sub.getSubject()); hours.setText(String.valueOf(sub.getHours())); teacher.setText(sub.getTeacher()); days.setText(sub.getDays()); marks.setText(String.valueOf(sub.getMarks())); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } public void editing(View view) { DatabaseHelper db = new DatabaseHelper(this); db.updateSubject(new Subjects(subject.getText().toString(), Integer.parseInt(hours.getText().toString()), teacher.getText().toString(), days.getText().toString(), Integer.parseInt(marks.getText().toString())), data); Toast.makeText(this, "Зміну внесено!", Toast.LENGTH_LONG).show(); this.recreate(); } } WatchSubject.java package com.knowleen.lab5and; import android.support.v7.app.AppCompatActivity; public class WatchSubject extends AppCompatActivity { TextView tx; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_watch_subject); tx = (TextView) findViewById(R.id.textView); final DatabaseHelper db = new DatabaseHelper(this); final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, db.makeSpinnet()); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner spinner = (Spinner) findViewById(R.id.spinner2); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { tx.setText(db.getSubject(adapter.getItem(position)).toString()); } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); } } Висновок. В даній лабораторній роботі ознайомився із SQLite в Android, навчився користуватися основними командами цієї СУБД в Android. Також закріпив свої знання створивши тестову програму.
Антиботан аватар за замовчуванням

22.03.2018 19:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!