МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра ЕОМ
/
ЗВІТ ДО ЛАБОРАТОРНОЇ РОБОТИ №5
з дисципліни:
«Мережні операційні системи»
на тему:
«Управління даними в ОС Android за допомогою СУБД SQLite»
Львів 2013
МЕТА РОБОТИ: Оволодіти навичками роботи з СУБД SQLite в ОС Android.
1. Завдання
Створити базу даних навчальних предметів біжучого семестру (назва предмету, обсяг предмету (навчальні години), викладач, розклад, показники успішності) та тестову програму перегляду і редагування записів бази даних.
Створити базу даних сучасних мобільних операційних систем (Android, iOS, BlackBerry OS, Symbian OS, Windows Phone, Bada та ін. [7] з інформацією про компанію-власника, біжучу версію, архітектурні особливості (сімейство і т.п.), біжучу долю на ринку мобільних обчислювальних пристроїв та ін.) та тестову програму перегляду і редагування записів бази даних.
2. Перелік основних методів для роботи з СУБД SQLite в ОС Android
Основні методи для роботи з СУБД SQLITE В ОС Android:
• openOrCreateDatabase(),
• execSQL(),
• insert(),
• update(),
• delete(),
• close().
3. Лістинг тестової програми
MainActivity.java
package com.example.V_Ghost_lab5;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
private static final String DATABASE_NAME = "V_Ghost.db";
private SQLiteDatabase mDatabase;
public static final String KEY_ID = "id";
public static final String KEY_LESSON = "lesson";
public static final String KEY_TIME = "time";
public static final String KEY_TEACHER = "teacher";
public static final String KEY_ROZKLAD = "rozklad";
public static final String KEY_BALU = "balu";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void CreateBD(View view)
{
//create BD
mDatabase = openOrCreateDatabase(DATABASE_NAME,
SQLiteDatabase.CREATE_IF_NECESSARY, null);
//create TABLE
mDatabase.execSQL("DROP TABLE IF EXISTS " + "V_Ghost");
String createTabl = "CREATE TABLE pikaso(id INTEGER PRIMARY KEY AUTOINCREMENT,lesson TEXT,time TEXT,teacher TEXT,rozklad TEXT,balu TEXT)";
mDatabase.execSQL(createTabl);
mDatabase.close();
}
public void SaveBut(View view)
{
boolean isBDopen = mDatabase.isOpen();
if(isBDopen == false) mDatabase = openOrCreateDatabase(DATABASE_NAME,
SQLiteDatabase.OPEN_READWRITE, null);
EditText ed_id = (EditText)findViewById(R.id.editText1);
EditText ed_lesson = (EditText)findViewById(R.id.editText6);
EditText ed_time = (EditText)findViewById(R.id.editText5);
EditText ed_teacher = (EditText)findViewById(R.id.editText4);
EditText ed_rozklad = (EditText)findViewById(R.id.editText2);
EditText ed_balu = (EditText)findViewById(R.id.editText3);
long b = createTodo(ed_lesson.getText().toString(),ed_time.getText().toString(),ed_teacher.getText().toString(),
ed_rozklad.getText().toString(),ed_balu.getText().toString());
ed_id.setText(Long.toString(b));
//close BD
mDatabase.close();
}
public void ViewBut(View view)
{
boolean isBDopen = mDatabase.isOpen();
if(isBDopen == false) mDatabase = openOrCreateDatabase(DATABASE_NAME,
SQLiteDatabase.OPEN_READWRITE, null);
//кількість рядків?
int rowCount = getRowsCount();
EditText ed_id = (EditText)findViewById(R.id.editText1);
EditText ed_lesson = (EditText)findViewById(R.id.editText6);
EditText ed_time = (EditText)findViewById(R.id.editText5);
EditText ed_teacher = (EditText)findViewById(R.id.editText4);
EditText ed_rozklad = (EditText)findViewById(R.id.editText2);
EditText ed_balu = (EditText)findViewById(R.id.editText3);
int bodja= Integer.parseInt(ed_id.getText().toString());
//ed_rozklad.setText(Integer.toString(bodja));
if(bodja<=0 || bodja>rowCount)
{
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Warning");
alertDialog.setMessage("Ви ввели не правильний ID");
alertDialog.show();
ed_id.setText("");
}
else
{
Cursor input = fetchTodo(bodja);
String temp = input.getString( input.getColumnIndex("lesson") );
ed_lesson.setText(temp);
ed_time.setText(input.getString(input.getColumnIndex("time")));
ed_teacher.setText(input.getString(input.getColumnIndex("teacher")));
ed_rozklad.setText(input.getString(input.getColumnIndex("rozklad")));
ed_balu.setText(input.getString(input.getColumnIndex("balu")));
}
mDatabase.close();
}
public long createTodo(String lesson, String time,
String teacher, String rozklad, String balu){
ContentValues initialValues = createContentValues(lesson,time,teacher,rozklad,balu);
return mDatabase.insert("V_Ghost", null, initialValues);
}
private ContentValues createContentValues(String lesson, String time,
String teacher, String rozklad, String balu) {
ContentValues values = new ContentValues();
values.put(KEY_LESSON, lesson);
values.put(KEY_TIME, time);
values.put(KEY_TEACHER, teacher);
values.put(KEY_ROZKLAD, rozklad);
values.put(KEY_BALU, balu);
return values;
}
public Cursor fetchTodo(long rowId) throws SQLException {
Cursor mCursor = mDatabase.query(true, "pikaso", new String[] {
KEY_LESSON, KEY_TIME, KEY_TEACHER, KEY_ROZKLAD, KEY_BALU },
KEY_ID + "=" + String.valueOf(rowId), null, null, null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public int getRowsCount() {
String countQuery = "SELECT * FROM " + "pikaso";
Cursor cursor = mDatabase.rawQuery(countQuery, null);
return cursor.getCount();
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="V_Ghost"
android:textColor="#006600" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_toLeftOf="@+id/textView1"
android:onClick="CreateBD"
android:text="Створити БД" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_alignParentRight="true"
android:layout_marginLeft="28dp"
android:layout_toRightOf="@+id/textView1"
android:ems="10"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignRight="@+id/textView1"
android:text="ID"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/button1"
android:layout_marginTop="59dp"
android:ems="10" />
<EditText
android:id="@+id/editText5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText6"
android:ems="10" />
<EditText
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText5"
android:ems="10" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText1"
android:layout_below="@+id/editText4"
android:ems="10" />
<Button
android:id="@+id/button2"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/editText6"
android:layout_below="@+id/editText1"
android:layout_marginTop="14dp"
android:text="Переглянути"
android:onClick="ViewBut"/>
<Button
android:id="@+id/button3"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_alignLeft="@+id/button1"
android:text="Зберегти"
android:onClick="SaveBut" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText2"
android:layout_below="@+id/editText2"
android:ems="10" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText6"
android:layout_alignBottom="@+id/editText6"
android:layout_alignLeft="@+id/button3"
android:text="Предмет"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText5"
android:layout_alignBottom="@+id/editText5"
android:layout_alignLeft="@+id/textView3"
android:text="Години"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText4"
android:layout_alignBottom="@+id/editText4"
android:layout_alignLeft="@+id/textView4"
android:text="Викладач"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_alignLeft="@+id/textView5"
android:text="Кількість пар"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText3"
android:layout_alignBottom="@+id/editText3"
android:layout_alignLeft="@+id/textView6"
android:text="Кількість набраних балів"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>
4. Результати виконання тестової програми
Для роботи програми спочатку необхідно натиснути кнопку «Створити БД», оскільки дана БД буде видалятись кожен раз при запуску програми. При натисненні цієї кнопки буде створено базу даних “Pikaso.db”, а також таблицю “pikaso”, що містить такі стовпці:
id типу INTEGER з параметрами – PRIMARY KEY та AUTOINCREMENT;
lesson TEXT;
time TEXT;
teacher TEXT;
rozklad TEXT;
balu TEXT.
/
Рис.1. Скріншот програми після її запуску
/
Рис.2. Скріншот після натиснення кнопки Вивід з БД
ВИСНОВОК
В даній лабораторній роботі я створив новий Android додаток для роботи з базою даних, а також провів його тест. Оволодів навичками роботи з СУБД SQLite в ОС Android.