Gå til innhold

Javakode for å kommunisere med database JavaDB!


Anbefalte innlegg

Hei!

 

Jeg sliter litt med å finne ut hva som jeg gjør feil her, jeg skjønner ikke helt hvordan jeg skal få fiksa den catch exception greia?, noen som kan hjelpe meg?

 

 

 

import java.sql.*;
public class FagStuderer {
  public static void endreFagkode(String gmlKode, String nyKode) {
    Connection forbindelse = null;
    Statement setning = null;
    ResultSet res = null;
    try {
      forbindelse   = DriverManager.getConnection("jdbc:default:connection");
      setning = forbindelse.createStatement();
      String sqlSelect = "select fagnavn from fag where fagkode = '" + gmlKode + "'";
      res = setning.executeQuery(sqlSelect);
      if (res.next()) {
        String fagnavn = res.getString("fagnavn");
        res.close();
        String sqlUpdate = "insert into fag(fagkode, fagnavn) values ('" + nyKode + "', '" + fagnavn + "')";
        setning.executeUpdate(sqlUpdate);
        sqlUpdate = "update studerer set fagkode = '" + nyKode + "' where fagkode = '" + gmlKode + "'";
        setning.executeUpdate(sqlUpdate);
        sqlUpdate = "delete from fag where fagkode = '" + gmlKode + "'";
        setning.executeUpdate(sqlUpdate);
      }
    } finally {
      setning.close();
      forbindelse.close();
    }
 }
}

Lenke til kommentar
Videoannonse
Annonse
Hei!

 

Jeg sliter litt med å finne ut hva som jeg gjør feil her, jeg skjønner ikke helt hvordan jeg skal få fiksa den catch exception greia?, noen som kan hjelpe meg?

 

 

 

import java.sql.*;
public class FagStuderer {
  public static void endreFagkode(String gmlKode, String nyKode) {
    Connection forbindelse = null;
    Statement setning = null;
    ResultSet res = null;
    try {
      forbindelse   = DriverManager.getConnection("jdbc:default:connection");
      setning = forbindelse.createStatement();
      String sqlSelect = "select fagnavn from fag where fagkode = '" + gmlKode + "'";
      res = setning.executeQuery(sqlSelect);
      if (res.next()) {
        String fagnavn = res.getString("fagnavn");
        res.close();
        String sqlUpdate = "insert into fag(fagkode, fagnavn) values ('" + nyKode + "', '" + fagnavn + "')";
        setning.executeUpdate(sqlUpdate);
        sqlUpdate = "update studerer set fagkode = '" + nyKode + "' where fagkode = '" + gmlKode + "'";
        setning.executeUpdate(sqlUpdate);
        sqlUpdate = "delete from fag where fagkode = '" + gmlKode + "'";
        setning.executeUpdate(sqlUpdate);
      }
    } finally {
      setning.close();
      forbindelse.close();
    }
 }
}

 

Hva er det meningen at koden din skal gjøre? Det ser veldig komplisert ut i forhold til det jeg tror oppgaven din er?

Lenke til kommentar

Når man jobber med noe som kan generere en Exception, bør man alltid prøve å fange opp denne, spesiellt når man jobber mot databaser eller andre eksterne systemer.

Legg til en catch etter try og skriv ut en stack-trace på Exception. Da vet du ihvertfall HVA og HVOR det er noe feil.

Slik lager du en try-catch

try{
//CODE
}
catch(Exception e){
e.printStackTrace();
}

 

I finally bør man IKKE kjøre funksjoner som kan generere en Exception uten å fange opp denne. Feks hvis setning.close() feiler, vil ikke forbindelse.close() kjøres. Da kan du fort få en del unødvenige åpne connections mot databasen.

Jeg pleier å ha en egen metode i mine prosjekter som utfører selve lukkinga av Connection og Statement.

Eksempel på funksjon:

public static void close(Connection c){
try{c.close();}catch(Exception ignored){} //Ignorerer exceptions
}

Når du har lagt til catch, kan du se hva som er feil og deretter rette opp dette.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...