Presentation is loading. Please wait.

Presentation is loading. Please wait.

Android aplikacija i baze podataka

Similar presentations


Presentation on theme: "Android aplikacija i baze podataka"— Presentation transcript:

1 Android aplikacija i baze podataka

2 Tipovi baza podataka Interna baza podataka – SQLite
vidljive samo unutar aplikacije Eksterna baza podataka – MySQL nije moguć direktan pristup web servisi

3 Aplikacija SQLite baza vozača MySQL baza vozila

4 Aplikacija i SQLite baza podataka
klasa Vozac.java – atributi id i ime klasa naslijeđena iz SQLiteOpenHelper kreiranje baze podataka DAO klasa - VozacDataSource uspostava konekcije pristup podacima

5 2) MySQLiteHelper public class MySQLiteHelper extends SQLiteOpenHelper { public static final String TABLE_VOZACI = "vozaci"; public static final String COLUMN_ID = "id"; public static final String COLUMN_IME = "ime"; private static final String DATABASE_NAME = "vozaci.db"; private static final int DATABASE_VERSION = 1; // iskaz za kreiranje baze private static final String DATABASE_CREATE = "create table " + TABLE_VOZACI + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_IME + " text not null);"; public MySQLiteHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE); public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(MySQLiteHelper.class.getName(), "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS " + TABLE_VOZACI); onCreate(db);

6 3) VozacDataSource public class VozacDataSource {
private SQLiteDatabase database; private MySQLiteHelper dbHelper; private String[] allColumns = { MySQLiteHelper.COLUMN_ID, MySQLiteHelper.COLUMN_IME }; public VozacDataSource(Context context) { dbHelper = new MySQLiteHelper(context); } public void open() throws SQLException { database = dbHelper.getWritableDatabase(); public void close() { dbHelper.close(); public Vozac createVozac(String v) { ContentValues values = new ContentValues(); values.put(MySQLiteHelper.COLUMN_IME, v); long insertId = database.insert(MySQLiteHelper.TABLE_VOZACI, null, values); Cursor cursor = database.query(MySQLiteHelper.TABLE_VOZACI, allColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null, null, null, null); cursor.moveToFirst(); Vozac novi = cursorToVozac(cursor); cursor.close(); return novi; public void deleteVozac(Vozac v) { long id = v.getId(); database.delete(MySQLiteHelper.TABLE_VOZACI, MySQLiteHelper.COLUMN_ID + " = " + id, null); public boolean updateVozac(long l, String novo) { ContentValues args = new ContentValues(); args.put(MySQLiteHelper.COLUMN_IME, novo); return database.update(MySQLiteHelper.TABLE_VOZACI, args, MySQLiteHelper.COLUMN_ID + "=" + l, null) > 0; } public ArrayList<Vozac> getAll() { ArrayList<Vozac> svi = new ArrayList<Vozac>(); Cursor cursor = database.query(MySQLiteHelper.TABLE_VOZACI, allColumns, null, null, null, null, null); cursor.moveToFirst(); while (!cursor.isAfterLast()) { Vozac v = cursorToVozac(cursor); svi.add(v); cursor.moveToNext(); cursor.close(); return svi; private Vozac cursorToVozac(Cursor cursor) { Vozac v = new Vozac(); v.setId(cursor.getLong(0)); v.setIme(cursor.getString(1)); return v;

7 Aplikacija i MySQL baza podataka
koraci za uspostavu veze s eksternom bazom podataka kreirati MySQL bazu podataka baza: test tabela: vozila polja: broj (broj linije), linija (naziv linije) kreirati web servis za komunikaciju s bazom za svaku od operacija (preuzimanje, umetanje, brisanje, izmjena) naslijediti klasu AsyncTask unutar koje će se vršiti komunikacija omogućava izvršenje pozadinskih operacija i rezultat tih operacija prikazuje na UI niti

8 2) Web servis (vozila.php)
function zag() { header("{$_SERVER['SERVER_PROTOCOL']} 200 OK"); header('Content-Type: text/html'); header('Access-Control-Allow-Origin: *'); } function rest_get($request, $data) { $veza = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); $veza->exec("set names utf8"); $upit = $veza->prepare("SELECT * FROM vozila"); $upit->execute(); print "{ \"vozila\": " . json_encode($upit->fetchAll()) . "}"; function rest_post($request, $data) { $broj = $data["broj"]; $linija = $data["linija"]; $upit = $veza->prepare("INSERT INTO vozila SET broj = :broj, linija = :linija;"); $upit->bindValue(":broj", $broj, PDO::PARAM_INT); $upit->bindValue(":linija", $linija, PDO::PARAM_STR); function rest_delete($request) { $poz = strrpos($request, "="); $broj=intval(substr($request, $poz+1)); ?> $upit=$veza->prepare("delete from vozila where broj=:broj"); $upit->bindValue(":broj", $broj, PDO::PARAM_INT); $upit->execute(); } function rest_put($request, $data) { $broj = $data["broj"]; $linija = $data["linija"]; $veza = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); $veza->exec("set names utf8"); $upit = $veza->prepare("UPDATE vozila SET linija = :linija WHERE broj = :broj;"); $upit->bindValue(":linija", $linija, PDO::PARAM_STR); function rest_error($request) { } $method = $_SERVER['REQUEST_METHOD']; $request = $_SERVER['REQUEST_URI']; switch($method) { case 'PUT': parse_str(file_get_contents('php://input'), $put_vars); zag(); $data = $put_vars; rest_put($request, $data); break; case 'POST': zag(); $data = $_POST; rest_post($request, $data); break; case 'GET': zag(); $data = $_GET; rest_get($request, $data); break; case 'DELETE': zag(); rest_delete($request); break; default: header("{$_SERVER['SERVER_PROTOCOL']} 404 Not Found"); rest_error($request); break; ?>

9 3a) UcitajVozila class UcitajVozila extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { HttpGet httpGet = new HttpGet(" try { HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = httpclient.execute(httpGet);     return EntityUtils.toString(response.getEntity(), HTTP.UTF_8); } catch (Exception e) { e.printStackTrace(); return null; protected void onPostExecute(String response) { final JSONArray jsonObj = new JSONObject(response).getJSONArray("vozila"); vozila.clear(); for (int i = 0; i < jsonObj.length(); i++) { Vozilo vozilo = new Vozilo(); vozilo.setBrojVozila(jsonObj.getJSONObject(i).getInt("broj")); vozilo.setLinija(jsonObj.getJSONObject(i).getString("linija")); vozila.add(vozilo); osvjeziListu(); } catch (Exception e) {

10 3b) DodajVozilo class DodajVozilo extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { String broj = params[0]; String linija = params[1]; HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(" try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("broj", broj)); nameValuePairs.add(new BasicNameValuePair("linija", linija)); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); Log.d("response", EntityUtils.toString(response.getEntity(), HTTP.UTF_8)); } catch (Exception e) { e.printStackTrace(); } return null; protected void onPostExecute(String response) { new UcitajVozila().execute();

11 3c) ObrisiVozilo class ObrisiVozilo extends AsyncTask<Vozilo, Void, String> { @Override protected String doInBackground(Vozilo... params) { Vozilo vozilo = params[0]; HttpClient httpclient = new DefaultHttpClient(); HttpDelete httpdelete = new HttpDelete(" + String.valueOf(vozilo.getBrojVozila())); try { HttpResponse response = httpclient.execute(httpdelete); } catch (Exception e) { e.printStackTrace(); } return null; protected void onPostExecute(String response) { new UcitajVozila().execute();

12 3d) IzmijeniVozilo class IzmijeniVozilo extends AsyncTask<Vozilo, Void, String> { @Override protected String doInBackground(Vozilo... params) { Vozilo vozilo = params[0]; HttpPut httpPut = new HttpPut(" try { HttpClient httpclient = new DefaultHttpClient(); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair("broj", String.valueOf(vozilo.getBrojVozila()))); nameValuePairs.add(new BasicNameValuePair("linija", vozilo.getLinija())); httpPut.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httpPut); return EntityUtils.toString(response.getEntity(), HTTP.UTF_8); } catch (Exception e) { e.printStackTrace(); } return null; protected void onPostExecute(String response) { new UcitajVozila().execute();


Download ppt "Android aplikacija i baze podataka"

Similar presentations


Ads by Google