Databashantering med JDBC

Databaser ligger långt utanför den här delkursen, den som har tänkt använda det i projektet får lära sig på egen hand.. Den här sidan innehåller bara ett par mycket korta exempel för att komma igång med databaskopplingar från Javaprogram.


Det API som används heter JDBC och finns i paketet java.sql. En bra genomgång av JDBC finns i JavaTutorial, se http://java.sun.com/docs/books/tutorial/jdbc/, ännu mer information finns på http://java.sun.com/products/jdk/1.4/docs/guide/jdbc/. JDBC:s hemsida hittar du på http://java.sun.com/products/jdbc/.

För att komma åt en databas behöver du en JDBC-drivrutin, vilka som finns ser du på http://industry.java.sun.com/products/jdbc/drivers/. I brist på bättre kan du som sista utväg använda den JDBC-ODBC-brygga (se http://java.sun.com/products/jdk/1.4/docs/guide/jdbc/getstart/bridge.doc.html) som ingår i JDK. Använder du den måste du först definiera en länk till din databas i ODBC. Jag gjorde det (i Windows98) med ODBC-verktyget i kontrollpanelen. När det är gjort krävs nedanstående kodrader för att komma åt databasen via JDBC.

  1. Ladda den klass du ska använda som drivrutin. för JDBC-ODBC-bryggan görs det med raden Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Denna rad gör att javamotorn laddar klassen sun.jdbc.odbc.JdbcOdbcDriver, vilken automatiskt kommer att registrera sig hos DriverManager som administrerar databasdrivrutiner.
  2. Skapa en Connection till databasen med raden 
    Connection con = DriverManager.getConnection(url, "username", "password");
    DriverManager kommer att göra denna koppling med hjälp av någon av de registrerade drivrutinerna. I det här fallet blir det den klass vi skapade i förra punkten. username är användarnamnet och password är lösenordet för databasen. url är en url som beskriver databasen. För JDBC-ODBC-bryggan blir det jdbc:odbc:<data-source-name>, där data-source-name är namnet på ODBC-länken till databasen.
  3. Skapa ett Statement-objekt med raden
    stmt = con.createStatement();
  4. Det är detta objekt som ska utföra SQL-kommandon.
  5. Utför SQL-kommandon. Statement har bland annat metoderna executeUpdate() vilken utför kommandon som modifierar databasen och executeQuery() vilken läser databasens innehåll. Följande rad utför sökningen som finns i Stringen query.
    ResultSet rs = stmt.executeQuery(query);
  6. Metoden executeQuery() returnerar ett ResultSet vilket innehåller resultatet av sökningen och information om hur den gick. Följande kodrader läser innehållet i ett ResulSetet rs rad för rad och skriver det på System.out.
    while (rs.next()) {
  7.   String s = rs.getString("COF_NAME");
      float f = rs.getFloat("PRICE");
      System.out.println(s + "   " + f);
    }
Här kommer dels ett program som skapar en tabell, CreateCoffees.java, dels ett som skriver till och läser från tabellen, InsertCoffees.java. Dessa program förutsätter att det redan finns en databas med en ODBC-länk vid namn CafeJava.