Gyakorlat10

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

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.)
Személyes eszközök