Programowanie dla technologii bezprzewodowych
mgr Paweł Cudek
Programowanie dla technologii bezprzewodowych
Laboratorium 2
Cele:
Baza danych SQLite
Zadania
Materiały do zadao znajdują się na dysku wspólnym w katalogu PCudek\ Programowanie dla technologii
bezprzewodowych\Lab 3.
Obraz wirtualnego systemu operacyjnego Win XP na którym należy wykonad zadania znajduje się w katalogu
PCudek\ Programowanie dla technologii bezprzewodowych\ Win_XP_Android
1. Skopiuj i uruchom wirtualną maszynę.
Po uruchomieniu zmieo nazwę komputera w sieci na wNUMER_INDEKSU (Start->Mój komputer-
>Właściwości ->Nazwa komputera->Zmień)
2. Uruchom program Eclipse wpisując w adresie obszaru roboczego (workspace) D:\@projekty\lab3 .
Sprawdź czy środowisko programistyczne jest przygotowane do uruchomienia projektu wykonując
następujące czynności:
a) Window ->Preferences->Android->SDK Location: C:\PROGRA~1\Android\android-sdk
UWAGA!!! Pamiętaj aby nazwę „Program Files” zamienid na PROGRA~1 lub w przypadku ”
Program Files (86)” na PROGRA~2
b) Window ->Android SDK and AVD Manager: sprawdź czy na liście wirtualnych urządzeo znajduje
się urządzenie, które zamierzasz wykorzystad w projekcie
3. Wybierając File->New->Other utwórz nowy „Android project” z następującymi ustawieniami:
Project name: database
Build Target: Android 2.1
Aplication name: Database
Package name: pl.wsiz.database
Craeate Activity: DatabaseActivity
Min SDK Version: 7
4. W pliku DatabaseActivity.java utwórz bazę danych SQLite dodając następujące linie kodu:
import
android.database.sqlite.SQLiteDatabase;
//zmienna stanowiąca uchwyt do bazy danych
private
SQLiteDatabase
sampleDB
;
W metodzie onCreate dodaj kod
//utworzenie bazy danych w pliku o nazwie sampleDB
sampleDB
=
this
.openOrCreateDatabase(
"sampleDB"
, SQLiteDatabase.
CREATE_IF_NECESSARY
,
null
);
//ustawienia bazy
sampleDB
.setVersion(1);
sampleDB
.setLocale(Locale.getDefault());
Programowanie dla technologii bezprzewodowych
mgr Paweł Cudek
sampleDB
.setLockingEnabled(
true
);
//zapytanie tworzące tabele
String createTable=
"CREATE TABLE IF NOT EXISTS USER (id int, name varchar, password
varchar);"
;
//wykonanie zapytania
sampleDB
.execSQL(createTable);
5. Przygotuj konfigurację uruchomieniową I uruchom emulator.
Po wyświetleniu ekranu naszej aplikacji przejdź do perspektyw DDMS (Window->Open perspective-
>DDMS). Dla uruchomionego emulatora otwórz zakładkę File Explorer i sprawdź czy istnieje plik bazy
danych sampleDB w lokalizacji /data/data/pl.wsiz.database/database
6. Połącz się z bazą danych wykorzystując narzędzia SDK
Uruchom wiersz poleceo Start->Uruchom->cmd
Sprawdź nazwę emulatora w perspektywie DDMS (prawdopodobnie będzie to emulator-5554) i
uruchom aplikacje adb.exe wpisując:
Ścieżka do Android SDK\platform-tools\adb.exe –s emulator-5554 shell
Wywołanie tego polecenie pozwoli nam poruszad się w systemie naszego emulatora.
Wywołaj polecenie listujące zawartośd katalogu:
ls /data/data/pl.wsiz.database/databases
Uruchom program do obsługi bazy wpisując sqlite3 /data/data/pl.wsiz.database/databases/sampleDB.
Poleceniem .table sprawdź czy na liście tabel widnieje tabela o nazwie USER.
7. Przygotuj nowe Activity w następujących krokach
a) w res/layout utwórz plik insert.xml
b) w src/pl.wsiz.database utwórz plik InsertActivity.java dziedziczący z klasy
android.app.Activity,
który będzie wczytywał zawartośc pliku insert.xml
package
pl.wsiz.database;
import
android.app.Activity;
import
android.os.Bundle;
public
class
InsertActivity
extends
Activity {
/** Called when the activity is first created. */
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
insert
);
}
}
c) Powtórz kod związany z utworzeniem obiektu bazy. (bez tworzenia tabeli)
d) Zarejestruj nowe activity w pliku AndroidManifest.xml dopisując:
<
activity
android:name
=
".InsertActivity"
></
activity
>
8.
W pliku main.xml dodaj nowy przycisk:
<
Button
android:text
=
"Button"
android:id
=
"@+id/insertButton"
android:layout_width
=
"fill_parent"
Programowanie dla technologii bezprzewodowych
mgr Paweł Cudek
android:layout_height
=
"wrap_content"
/>
9.
W pliku DatabaseActivity.java
a)
dodaj zmienną
private
Button
insertButton
;
b) przechwyd do niej element interfejsu w metodzie onCreate
insertButton
= (Button)findViewById(R.id.
insertButton
);
c) dodaj
„słuchacza kliknięd” (
setOnClickListener)
insertButton
.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
switchToInsertActivity();
}
});
metoda switchToInsertActivity służy do wywołania InsertAvtivity i ma następującą postad:
private
void
switchToInsertActivity()
{
Intent intent =
null
;
intent =
new
Intent(
this
, InsertActivity.
class
);
startActivity(intent);
}
Uruchom aplikację i sprawdź czy następuje przełączenie ekranów.
10.
Do pliku insert.xml dodaj trzy pola tekstowe i dwa przyciski:
<
EditText
android:text
=
"ID"
android:id
=
"@+id/textid"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
/>
/>
<
EditText
android:text
=
"Imię"
android:id
=
"@+id/textname"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
/>
/>
<
EditText
android:text
=
"Hasło"
android:id
=
"@+id/textpassword"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
/>
/>
<
Button
android:text
=
"Dodaj"
android:id
=
"@+id/addButton"
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
/>
<
Button
android:text
=
"Powrót"
android:id
=
"@+id/toMain"
Programowanie dla technologii bezprzewodowych
mgr Paweł Cudek
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
/>
11.
W pliku InsertActivity.java dodaj zmienne związane z nowo utworzonymi elementami interfejsu
private
EditText
textId
;
private
EditText
textName
;
private
EditText
textPassword
;
private
Button
addButton
;
private
Button
toMainButton
;
oraz w metodzie onCreate
textId
= (EditText)findViewById(R.id.
textid
);
textName
= (EditText)findViewById(R.id.
textname
);
textPassword
= (EditText)findViewById(R.id.
textpassword
);
addButton
= (Button)findViewById(R.id.
addButton
);
toMainButton
= (Button)findViewById(R.id.
toMainButton
);
12. W pliku InsertActivity.java dodaj „słuchacza kliknięd” (
setOnClickListener)
dla przycisku addButton,
który będzie zapisywał dane do tabeli.
addButton
.setOnClickListener(
new
View.OnClickListener() {
public
void
onClick(View v) {
int
id = Integer.parseInt(
textId
.getText().toString());
String name =
textName
.getText().toString();
String password =
textPassword
.getText().toString();
//String sqlInsert =" INSERT INTO USER VALUES ("+id+",'"+name+"',
'"+password+"');";
//sampleDB.execSQL(sqlInsert)
ContentValues values =
new
ContentValues();
values.put(
"id"
, id);
values.put(
"name"
, name);
values.put(
"password"
, password);
sampleDB
.insert(
"USER"
,
""
, values);
Toast.makeText(getApplicationContext(),
"Dodano rekord"
,
Toast.
LENGTH_LONG
).show();
textId
.setText(
""
); //czyszczenie pola
textName
.setText(
""
);//czyszczenie pola
textPassword
.setText(
""
);//czyszczenie pola
Log.d(
"RESULT"
,
"-----------------DODANO REKORD---------------"
);
}
});
Zwród uwagę na działanie Toast.makeText oraz Log.d (Wynik będzie widoczny w perspektywie DDMS-
>LogCat).
13. Po uruchomieniu aplikacji i dodaniu rekordu wykonaj czynności z punktu 6 i wykonaj zapytanie SELECT *
FROM USER; W tabeli powinien znaleźd się nowy rekord.
14. W plikach InsertActivity.java oraz DatabaseActivity.java
nadpisz metodę onStop()
@Override
protected
void
onStop()
{
super
.onStop();
sampleDB
.close();
}
15. Wzorując
się na punkcie 9 napisz kod który po naciśnięciu przycisku
toMainButton
pozwoli przejść do
DatabaseActivity.
Programowanie dla technologii bezprzewodowych
mgr Paweł Cudek
16. Wzorując się na punkcie 7 utwórz nowe activity o nazwie ReadDatabaseActivity zawierające kontrolkę
TextView o atrybucie android: id=”@+id/tabeContent”. Zadaniem tego ekranu powinno byd wczytanie
do TextView zawartości bazy danych.
Kod do pobierania zawartości bazy jest następujący:
String query =
"SELECT * FROM USER;"
;
Cursor cursor =
sampleDB
.rawQuery(query,
null
);
cursor.moveToFirst();
while
(cursor.moveToNext())
{
int
id = cursor.getInt(cursor.getColumnIndex(
"id"
));
String name = cursor.getString(cursor.getColumnIndex(
"name"
));
String password = cursor.getString(cursor.getColumnIndex(
"password"
));
//kod dodający tekst do TextView
}
Dodaj przycisk powrotu do DatabaseActivity.
W activity DatabaseActivity dodaj przycisk, który pozwoli przejśd do nowo utworzonego actvity.