Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Лабораторна робота № 5
з курсу “ Мережні операційні системи”
на тему: «Управління даними в ОС Android за допомогою СУБД SQLite.»
Львів – 2014
Мета роботи: Оволодіти навичками роботи з СУБД SQLite в ОС Android.
1. Перелік основних методів для роботи з СУБД SQLite в ОС Android.
db.execSQL(query); - запит на створення видалення таблиць;
ourDatabase.insert(); - додавання нових записів в базу даних
ourDatabase.query(); - вибірка даних з бази
ourDatabase.delete(); - видалення даних з бази
ourDatabase.update(); - обновлення записів в базі
2. Результати виконання тестової програми.
/
Рис. 1. Результат виконання програми
Висновок: На даній лабораторній роботі я оволодів навичками роботи з СУБД SQLite в ОС Android.
3. Лістинг тестової програми.
MainActivity.xml
package com.example.subject;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.subject.MESSAGE";
private ListView obj;
DBHelper mydb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mydb = new DBHelper(this);
ArrayList array_list = mydb.getAllSubjects();
ArrayAdapter arrayAdapter =
new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list);
//adding it to the list view.
obj = (ListView)findViewById(0);
obj.setAdapter(arrayAdapter);
obj.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
int id_To_Search = arg2 + 1;
Bundle dataBundle = new Bundle();
dataBundle.putInt("id", id_To_Search);
Intent intent = new Intent(getApplicationContext(),com.example.subject.DisplayContact.class);
intent.putExtras(dataBundle);
startActivity(intent);
}
});
}
@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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch(item.getItemId())
{
case R.id.item1:
Bundle dataBundle = new Bundle();
dataBundle.putInt("id", 0);
Intent intent = new Intent(getApplicationContext(),com.example.subject.DisplayContact.class);
intent.putExtras(dataBundle);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public boolean onKeyDown(int keycode, KeyEvent event) {
if (keycode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
}
return super.onKeyDown(keycode, event);
}
}
DBHelper.java
package com.example.subject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "MyDBName.db";
public static final String SUBJECT_TABLE_NAME = "subjects";
public static final String SUBJECT_COLUMN_ID = "id";
public static final String SUBJECT_COLUMN_NAME = "subject";
public static final String SUBJECT_COLUMN_TIME = "time";
public static final String SUBJECT_COLUMN_LECTURER = "lecturer";
public static final String SUBJECT_MIDDLE = "middle";
private HashMap hp;
public DBHelper(Context context)
{
super(context, DATABASE_NAME , null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(
"create table subjects " +
"(id integer primary key, subject text,time text,lecturer text, middle text)"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS subjects");
onCreate(db);
}
public boolean insertSubject (String subject, String time, String lecturer, String middle)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("subject", subject);
contentValues.put("time", time);
contentValues.put("lecturer", lecturer);
contentValues.put("middle", middle);
db.insert("subjects", null, contentValues);
return true;
}
public Cursor getData(int id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from subjects where id="+id+"", null );
return res;
}
public int numberOfRows(){
SQLiteDatabase db = this.getReadableDatabase();
int numRows = (int) DatabaseUtils.queryNumEntries(db, SUBJECT_TABLE_NAME);
return numRows;
}
public boolean updateSubject (Integer id, String subject, String time, String lecturer, String middle)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("subject", subject);
contentValues.put("time", time);
contentValues.put("lecturer", lecturer);
contentValues.put("middle", middle);
db.update("subjects", contentValues, "id = ? ", new String[] { Integer.toString(id) } );
return true;
}
public Integer deleteSubject (Integer id)
{
SQLiteDatabase db = this.getWritableDatabase();
return db.delete("subjects",
"id = ? ",
new String[] { Integer.toString(id) });
}
public ArrayList getAllSubjects()
{
ArrayList array_list = new ArrayList();
//hp = new HashMap();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from subjects", null );
res.moveToFirst();
while(res.isAfterLast() == false){
array_list.add(res.getString(res.getColumnIndex(SUBJECT_COLUMN_NAME)));
res.moveToNext();
}
return array_list;
}
}
DisplayContact.java
package com.example.subject;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class DisplayContact extends Activity {
int from_Where_I_Am_Coming = 0;
private DBHelper mydb ;
TextView subject ;
TextView time;
TextView lecturer;
TextView middle;
int id_To_Update = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_contact);
subject = (TextView) findViewById(R.id.editTextName);
time = (TextView) findViewById(R.id.editTextTime);
lecturer = (TextView) findViewById(R.id.editTextLecturer);
middle = (TextView) findViewById(R.id.editTextMiddle);
mydb = new DBHelper(this);
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
int Value = extras.getInt("id");
if(Value>0){
//means this is the view part not the add contact part.
Cursor rs = mydb.getData(Value);
id_To_Update = Value;
rs.moveToFirst();
String subjec = rs.getString(rs.getColumnIndex(DBHelper.SUBJECT_COLUMN_NAME));
String tim = rs.getString(rs.getColumnIndex(DBHelper.SUBJECT_COLUMN_TIME));
String lecture = rs.getString(rs.getColumnIndex(DBHelper.SUBJECT_COLUMN_LECTURER));
String middl = rs.getString(rs.getColumnIndex(DBHelper.SUBJECT_MIDDLE));
if (!rs.isClosed())
{
rs.close();
}
//Button b = (Button)findViewById(R.id.b);
//b.setVisibility(View.INVISIBLE);
subject.setText((CharSequence)subjec);
subject.setFocusable(false);
subject.setClickable(false);
time.setText((CharSequence)tim);
time.setFocusable(false);
time.setClickable(false);
lecturer.setText((CharSequence)lecture);
lecturer.setFocusable(false);
lecturer.setClickable(false);
middle.setText((CharSequence)middl);
middle.setFocusable(false);
middle.setClickable(false);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
int Value = extras.getInt("id");
if(Value>0){
getMenuInflater().inflate(R.menu.display_contact, menu);
}
else{
getMenuInflater().inflate(R.menu.main, menu);
}
}
return true;
}
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);
switch(item.getItemId())
{
case R.id.Edit_Subject:
//Button b = (Button)findViewById(R.id.button1);
//b.setVisibility(View.VISIBLE);
subject.setEnabled(true);
subject.setFocusableInTouchMode(true);
subject.setClickable(true);
time.setEnabled(true);
time.setFocusableInTouchMode(true);
time.setClickable(true);
lecturer.setEnabled(true);
lecturer.setFocusableInTouchMode(true);
lecturer.setClickable(true);
middle.setEnabled(true);
middle.setFocusableInTouchMode(true);
middle.setClickable(true);
return true;
case R.id.Delete_Subject:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.deleteSubject)
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mydb.deleteSubject(id_To_Update);
Toast.makeText(getApplicationContext(), "Deleted Successfully", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(),com.example.subject.MainActivity.class);
startActivity(intent);
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
AlertDialog d = builder.create();
d.setTitle("Are you sure");
d.show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void run(View view)
{
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
int Value = extras.getInt("id");
if(Value>0){
if(mydb.updateSubject(id_To_Update,subject.getText().toString(), time.getText().toString(), lecturer.getText().toString(), middle.getText().toString())){
Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(),com.example.subject.MainActivity.class);
startActivity(intent);
}
else{
Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show();
}
}
else{
if(mydb.insertSubject(subject.getText().toString(), time.getText().toString(), lecturer.getText().toString(), middle.getText().toString())){
Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getApplicationContext(), "not done", Toast.LENGTH_SHORT).show();
}
Intent intent = new Intent(getApplicationContext(),com.example.subject.MainActivity.class);
startActivity(intent);
}
}
}
}
Висновок: На даній лабораторній роботі я оволодів навичками програмування доступу та управління базою даних в ОС Android. Розробив програму під Android пристрій.