background image

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()); 

background image

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"

  

background image

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"

  

background image

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. 

background image

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.