· 6 years ago · Sep 27, 2019, 06:14 PM
1package com.example.bartek;
2
3import androidx.appcompat.app.AppCompatActivity;
4
5import android.database.Cursor;
6import android.database.sqlite.SQLiteDatabase;
7import android.os.Bundle;
8import android.view.View;
9import android.widget.Button;
10import android.widget.EditText;
11import android.widget.TextView;
12
13public class MainActivity extends AppCompatActivity {
14
15 //Deklaracja bazy
16 protected SQLiteDatabase baza;
17
18 //Deklaracja przyciskow
19 private Button buttonDodaj;
20 private Button buttonWyszukaj;
21 private EditText editTextNazwisko;
22 private EditText editTexttDzial;
23 private EditText editTextWyszukaj;
24 private TextView textViewNazwisko;
25 private TextView textViewDzial;
26
27 @Override
28 protected void onCreate(Bundle savedInstanceState) {
29 super.onCreate(savedInstanceState);
30 setContentView(R.layout.activity_main);
31
32 //Przypisanie elementow layoutu
33 buttonDodaj = findViewById(R.id.buttonDodaj);
34 buttonWyszukaj = findViewById(R.id.buttonWyszukaj);
35 editTextNazwisko = findViewById(R.id.editTextNazwisko);
36 editTexttDzial = findViewById(R.id.editTextDzial);
37 editTextWyszukaj = findViewById(R.id.editTextWyszukaj);
38 textViewNazwisko = findViewById(R.id.textViewNazwisko);
39 textViewDzial = findViewById(R.id.textViewDzial);
40
41 //Stworzenie bazy tutaj
42 //Stworzenie bazy za pomoca stworzonej przez nas metody
43 baza = createDatabase("baza-dzialy-12.db");
44
45 //Stworzenie tabeli w bazie za pomoca stworzonej przez nas metody
46 //INTEGER PRIMARY KEY = AUTO INCREMENT, wazne by to dodac
47 String komenda = "CREATE TABLE IF NOT EXISTS dzialy(idNazwisko INTEGER PRIMARY KEY, nazwisko TEXT, dzial TEXT);";
48 runSQLcommand(baza, komenda);
49
50 //Tworzymy on click listener zapisu
51 View.OnClickListener onClickListenerZapis = new View.OnClickListener() {
52 @Override
53 public void onClick(View view) {
54 //Deklaracja zmiennych
55 String nazwisko = null;
56 String dzial = null;
57
58 //Jesli mamy wpisane nazwisko to przypisujemy go do Stringa nazwa
59 if (editTextNazwisko.getText() != null) {
60 nazwisko = editTextNazwisko.getText().toString();
61 }
62
63 //Jesli mamy wpisany dzial to przypisujemy go do Stringa nazwa
64 if (editTexttDzial.getText() != null) {
65 dzial = editTexttDzial.getText().toString();
66 }
67
68 //BARDZO WAZNE ZEBY PODAC NAZWY KOLUMN DO KTORYCH DODAJEMY WARTOSCI
69 String komenda = String.format("INSERT INTO 'dzialy' ('nazwisko', 'dzial') VALUES('%s', '%s');", nazwisko, dzial);
70 runSQLcommand(baza, komenda);
71 }
72 };
73
74 //Dodajemy onclicklistener do buttona dodaj
75 buttonDodaj.setOnClickListener(onClickListenerZapis);
76
77 //Tworzymy onclicklistener dla buttona szukaj
78 View.OnClickListener onClickListenerWyszukaj = new View.OnClickListener() {
79 @Override
80 public void onClick(View view) {
81 //Sprawdzamy czy ID jest wpisane
82 int id = 0;
83 if (editTextWyszukaj.getText() != null) {
84 id = Integer.parseInt(editTextWyszukaj.getText().toString());
85 }
86
87 //Komenda na sztywno zeby zobaczyc wynik
88 String komenda = String.format("SELECT * FROM 'dzialy' WHERE idNazwisko=%d", id);
89
90 //Stworzenie kursora poruszajacego sie po bazie
91 Cursor kursor = baza.rawQuery(komenda, null);
92
93 //Jesli kursor cos znalazl sprawdz pierwszy wiersz
94 if (kursor.moveToFirst()) {
95 //getString(1) - gdzie i=1 to kolumna o indeksie 1 (indeksy liczone od 0)
96 String nazwiskoOdczyt = kursor.getString(1);
97 //getString(2) - gdzie i=2 to kolumna o indeksie 2 (indeksy liczone od 0)
98 String dzialOdczyt = kursor.getString(2);
99
100 //Ustawienie tekstu
101 textViewNazwisko.setText(nazwiskoOdczyt);
102 textViewDzial.setText(dzialOdczyt);
103 }
104 kursor.close();
105 }
106 };
107 buttonWyszukaj.setOnClickListener(onClickListenerWyszukaj);
108 }
109
110 //Metoda tworzaca baze danych przyjmujaca nazwe bazy a zwracajaca obiekt z baza
111 private SQLiteDatabase createDatabase(String name) {
112 SQLiteDatabase database = openOrCreateDatabase(name, MODE_PRIVATE, null);
113 return database;
114 }
115
116 //Nasza metoda do uruchamiania komend SQL w naszej bazie
117 //Protected po to by klasy dziedziczace mogly rowniez uzywac tej metody
118 protected void runSQLcommand(SQLiteDatabase database, String command) {
119 database.execSQL(command);
120 }
121
122
123 //onDestroy jest to domyslna metoda Javy wykonywana przy wylaczaniu aplikacji,
124 //z racji ze wypada po sobie sprzatac kasujemy tu wszystko co wczesniej otwieralismy
125 @Override
126 protected void onDestroy() {
127 // Destruktor bazy
128 baza.close();
129
130 super.onDestroy();
131 }
132}