Informatika4-2017/Gyakorlat11

A MathWikiből
A lap korábbi változatát látod, amilyen Kkovacs (vitalap | szerkesztései) 2017. november 20., 12:36-kor történt szerkesztése után volt.

Tartalomjegyzék

Segítség

Sql parancsok

Sqlite javaban

Egy olyan megoldást fogunk használni amihez semmilyen sql telepítés nem lesz szükséges. Az omnibuson van sqlite3 így azzal játszhattok, de saját gépen nem kell majd telepítenetek, hogy javaban tudjátok használni.

  • Elsõ lépés, hogy töltsétek le innen a sqlite-jdbc-3.7.2.jar file-t.
  • Majd hozzatok létre egy új projectet. Ebbe mint a multkor a grizzly dependency-ket importáljátok ezt a .jar-t is.
  • Végül próbáljátok ki ezt a kódot, ha minden jól ment akkor a project mappátokban keletkezik egy sample.db file.
import java.sql.*;
 
public class SqlTest
{
  public static void main(String[] args) throws ClassNotFoundException
  {
    // load the sqlite-JDBC driver using the current class loader
    Class.forName("org.sqlite.JDBC");
 
    Connection connection = null;
    try
    {
      // create a database connection
      connection = DriverManager.getConnection("jdbc:sqlite:sample.db");
      Statement statement = connection.createStatement();
      statement.setQueryTimeout(30);  // set timeout to 30 sec.
 
      statement.executeUpdate("drop table if exists person");
      statement.executeUpdate("create table person (id integer, name string)");
      statement.executeUpdate("insert into person values(1, 'leo')");
      statement.executeUpdate("insert into person values(2, 'yui')");
      ResultSet rs = statement.executeQuery("select * from person");
      while(rs.next())
      {
        // read the result set
        System.out.println("name = " + rs.getString("name"));
        System.out.println("id = " + rs.getInt("id"));
      }
    }
    catch(SQLException e)
    {
      // if the error message is "out of memory", 
      // it probably means no database file is found
      System.err.println(e.getMessage());
    }
    finally
    {
      try
      {
        if(connection != null)
          connection.close();
      }
      catch(SQLException e)
      {
        // connection close failed.
        System.err.println(e);
      }
    }
  }
}
  • Ez egy olyan kód ami vigyáz mindenre. Ha nem tudja elérni az adatbázist nem hal meg teljesen, se akkor ha nem tudja módosítani, ha túl sokat kell várnia mire bármit is kapna belõle stb.

Egyszerûsítés

Írjunk egy osztályt amivel könnyedén tudjuk majd használni az adatbázisunkat.

  • A konstruktorában csináljuk meg az inicializálásokat. Azaz mindent a setQueryTimeout beállításáig bezárólag. A konstruktor csak az adatbázis file nevét kapja.
  • Természetesen ezáltal lennie kell egy connection és egy statement adattagjának.
  • Legyen egy executeUpdate metódusa, ami csak hívja meg a statementen az executeUpdate-et.
  • Legyen egy executeQuery metódusa, ami egy ResultSetet ad vissza, és azthiszem egyértelmû mit kell csinálnia.
  • Végül legyen egy close metódusa, ami tartalmazza a fenti kód finally részében található kódot. (Ezzel tudunk majd lekapcsolódni az adatbázisról.)


Próba adatbázis

Vagy sqlite3-on vagy javan keresztül hozzátok létre az alábbi táblázatokat, és töltsétek fel õket pár próba adattal:

  • users: id (sorszám), username, password, (esetleg további adatok a userrõl)
  • comments: id (sorszám), user, comment, (esetleg egy dátum formátum, hogy mikor küldte be a kommentet, és/vagy mégegy id ami jelzi, hogy melyik korábbi kommentre válaszol)


Facebook adatbázis

Az egyszerûsített adatbázis kezelõs osztályunk segítségével írjuk át az õsrégi facebookunkat, hogy sql adatbázit használjon.

Tipp:

  • Minden Vector és más adatszerkezetet "törölnünk" kell, hisz az ezekben tárolt adatokat mostmár az sql adatbázisban fogjuk tárolni.
  • Írjunk metódusokat a facebookos osztályainkhoz amikkel könnyedén kérhetjük le az adatokat.


Facebook weboldal

Ha marad idõ, akkor oldjuk meg a régóta elhalasztott weboldallá alakítását a facebookunknak.

Személyes eszközök