20.2. Kommunikere med databasen

Når vi har en forbindelse, kan vi oprette et "statement"-objekt, som vi kan sende kommandoer og forespørgsler til databasen med

  Statement stmt = forb.createStatement();

Der kan opstå forskellige undtagelser af typen SQLException, der skal fanges.

20.2.1. Kommandoer

SQL-kommandoer som INSERT, UPDATE, DELETE, CREATE TABLE, DROP TABLE og ALTER TABLE, der ikke giver et svar tilbage i form af data, sendes med executeUpdate()-metoden [1].

Her opretter vi f.eks. tabellen "kunder":

stmt.executeUpdate("create table KUNDER (NAVN varchar(32), KREDIT float)" );

... og indsætter et par rækker

stmt.executeUpdate("insert into KUNDER values('Jacob', -1799)");
stmt.executeUpdate("insert into KUNDER values('Brian', 0)");

Oftest har vi data i variabler, så vi skal sætte en streng sammen, der giver den rigtige SQL-kommando:

String navn = "Hans";
int kredit = 500;

// indsæt data fra variabler
stmt.executeUpdate("insert into KUNDER values('"+navn+"', "+kredit+")");

20.2.2. Forespørgsler

SQL-forespørgslen SELECT udføres med metoden executeQuery().

  ResultSet rs = stmt.executeQuery("select NAVN, KREDIT from KUNDER");

Den returnerer et ResultSet-objekt, der repræsenterer svaret på forespørgslen. Data hentes som vist herunder

  while (rs.next())
  {
    String navn = rs.getString("NAVN");
    double kredit = rs.getDouble("KREDIT");
    System.out.println(navn+" "+kredit);
  }

Man kalder altså next() for at få næste række i svaret, læser de enkelte celler ud fra kolonnenavnene, hvorefter man går videre til næste række med next() osv. Når next() returnerer false, er der ikke flere rækker at læse.

Slutbemærkning:

[1]

SQL fra JDBC er normalt forpligtigende, d.v.s. en kommando kan ikke fortrydes når den først er givet. I Avancered-afsnittet i slutningen af kapitlet vises hvordan automatisk forpligtigelse (eng.: auto-commit) kan slås fra.