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

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

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

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

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

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

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра ЕОМ / Звіт з лабораторної роботи №5 з дисципліни: “Мережні операційні системи” на тему: “Управління даними в ОС Android за допомогою СУБД SQLite” Мета: Оволодіти навичками роботи з СУБД SQLite в ОС Android. Перелік основних методів для роботи з СУБД SQLite в ОС Android: openOrCreateDatabase(), execSQL(), insert(), update(), delete(). Лістинг тестової програми: MainActivity.java package com.example.baztar.mos_lab5; import android.app.AlertDialog; import android.content.ContentValues; import android.content.DialogInterface; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SearchView; import android.widget.TabHost; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private ListView lv; private Button btnAdd; private TabHost tabHost; private EditText etName; private EditText etLecturer; private EditText etHours; private EditText etSchedule; private EditText etMark; private SearchView sv; private ArrayAdapter<String> adapter; private DBHelper dbHelper; private ArrayList<String> names; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabHost = (TabHost) findViewById(R.id.tabHost); lv = (ListView) findViewById(R.id.listView); btnAdd = (Button) findViewById(R.id.btnAdd); etName = (EditText) findViewById(R.id.etName); etLecturer = (EditText) findViewById(R.id.etLecturer); etHours = (EditText) findViewById(R.id.etHours); etSchedule = (EditText) findViewById(R.id.etSchedule); etMark = (EditText) findViewById(R.id.etMark); sv = (SearchView) findViewById(R.id.searchView); tabHost.setup(); TabHost.TabSpec tabSpec = tabHost.newTabSpec("tag1"); tabSpec.setContent(R.id.tab1); tabSpec.setIndicator("Search"); tabHost.addTab(tabSpec); tabSpec = tabHost.newTabSpec("tag2"); tabSpec.setContent(R.id.tab2); tabSpec.setIndicator("Add"); tabHost.addTab(tabSpec); tabHost.setCurrentTab(0); dbHelper = new DBHelper(this); updateListView(); sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { adapter.getFilter().filter(newText); return false; } }); lv.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { readTable(position); } }); btnAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addToTable(etName.getText().toString(), etHours.getText().toString(), etLecturer.getText().toString(), etSchedule.getText().toString(), etMark.getText().toString()); tabHost.setCurrentTab(0); updateListView(); etName.setText(""); etLecturer.setText(""); etHours.setText(""); etSchedule.setText(""); etMark.setText(""); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0,0,0,"Clear table"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case 0: deleteTable(); break; } return super.onOptionsItemSelected(item); } private void updateListView(){ try { SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor c = db.query(DBHelper.TABLE_NAME, new String[]{DBHelper.NAME}, null, null, null, null, null); names = new ArrayList<>(); while (c.moveToNext()) names.add(c.getString(0)); c.close(); adapter = new ArrayAdapter(this, R.layout.list_item, R.id.subject_name, names); lv.setAdapter(adapter); } catch (Exception ex){ Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show(); } } private void addToTable(String name, String hours, String lecturer, String schedule, String mark){ try { SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(DBHelper.NAME, name); contentValues.put(DBHelper.HOURS, hours); contentValues.put(DBHelper.LECTURER, lecturer); contentValues.put(DBHelper.SCHEDULE, schedule); contentValues.put(DBHelper.MARK, mark); db.insert(DBHelper.TABLE_NAME, null, contentValues); Toast.makeText(this, "Success!", Toast.LENGTH_LONG).show(); } catch (Exception ex){ Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show(); } } private void readTable(int pos){ SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor c = db.query(DBHelper.TABLE_NAME,null,"Name=?",new String[]{names.get(pos)},null,null,null); if(c.moveToFirst()) { int nameindex = c.getColumnIndex(DBHelper.NAME); int timeindex = c.getColumnIndex(DBHelper.HOURS); int lectindex = c.getColumnIndex(DBHelper.LECTURER); int scheduleindex = c.getColumnIndex(DBHelper.SCHEDULE); int markindex = c.getColumnIndex(DBHelper.MARK); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle(c.getString(nameindex)) .setMessage("Lecturer: " + c.getString(lectindex) + "\n" + "Hours: " + c.getString(timeindex) + "\n" + "Schedule: " + c.getString(scheduleindex) + "\n" + "Mark: " + c.getString(markindex)) .setCancelable(false) .setNegativeButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert = builder.create(); alert.show(); } else { Toast.makeText(this,"Wrong data",Toast.LENGTH_LONG).show(); return; } c.close(); } private void deleteTable(){ try { dbHelper.getWritableDatabase().delete(DBHelper.TABLE_NAME, null, null); Toast.makeText(this, "Deleted!", Toast.LENGTH_LONG).show(); } catch (Exception ex){ Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG).show(); } } }   activity_main.xml <?xml version="1.0" encoding="utf-8"?> <TabHost android:id="@+id/tabHost" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/tab1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="top" android:orientation="vertical"> <SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" /> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listView" /> </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_marginLeft="16dp" android:layout_marginRight="16dp"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:id="@+id/etName" android:hint="Name" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:id="@+id/etLecturer" android:hint="Lecturer" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPersonName" android:ems="10" android:id="@+id/etHours" android:hint="Hours" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:id="@+id/etSchedule" android:hint="Schedule" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:id="@+id/etMark" android:hint="Mark" /> <Button android:text="btnAdd" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnAdd" android:layout_marginTop="40dp" /> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost>   DBHelper.java package com.example.baztar.mos_lab5; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by Тарас on 12.12.2016. */ public class DBHelper extends SQLiteOpenHelper { public static final int DATABASE_VERSION = 1; public static final String DATABASE_NAME = "mos_lab5"; public static final String TABLE_NAME = "Subjects1"; public static final String NAME = "Name"; public static final String HOURS ="Hours"; public static final String LECTURER = "Lecturer"; public static final String SCHEDULE = "Schedule"; public static final String MARK = "Mark"; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table " + TABLE_NAME + " ("+ NAME + " text primary key," + HOURS + " text," + LECTURER + " text," + SCHEDULE + " text," + MARK + " text)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table if exist " + TABLE_NAME); onCreate(db); } }   Результати виконання тестової програми: /// Рис. 1. Результат виконання програми Висновки: На цій лабораторній роботі я оволодів навичками роботи з СУБД SQLite в ОС Android.
Антиботан аватар за замовчуванням

20.12.2017 21:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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