eshas Skrevet 8. desember 2006 Del Skrevet 8. desember 2006 Jeg er nybegynner i java. Har følgende problem med en if else setning. Når jeg prøver å skrive en epost adresse som finnes i databasen så får jeg både det som skal skrives ut i if setningen og det som skal skrives ut i else setningen. D.v.s jeg får bådde epost,navn, klage og teksten "Kunde ikke funnet". Når jeg prøver en epost som ikke finnes i database så får jeg "Kunde ikke funnet" flere ganger. Noen som kan hjelpe? import java.io.*; import javax.naming.*; import java.sql.*; import javax.sql.*; import java.util.Enumeration; import javax.servlet.*; import javax.servlet.http.*; public class Customer extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String title = "Bekreftelse"; response.setContentType("text/html"); PrintWriter out = response.getWriter(); try { Context initCtx = new InitialContext(); Context envCtx = (Context)initCtx.lookup("java:comp/env"); DataSource ds = (DataSource)envCtx.lookup("jdbc/mydb"); Connection con = ds.getConnection(); //con.setAutoCommit(false); // Do something with the Connection Statement s = con.createStatement(); ResultSet rs = s.executeQuery("select epost from kunde"); while (rs.next()) { if (rs.getString("epost").equalsIgnoreCase(request.getParameter("epost"))) { out.println("<BODY>\n" + "<H2 ALIGN=left>" + title + "</H1>\n" + "<OL>\n" + " <LO> Henvendelse fra: " + request.getParameter("epost") + "\n" + " <DT>Hei: " + request.getParameter("navn") + "\n" + " <DT>Din henvendelse: " + request.getParameter("klage") + "\n" + " <DT>Henvendelsen din blir behandlet snart"+ "<DL>\n"); } else { out.println("Kunde ikke funnet"); } } //con.commit(); // Clean up after ourselves rs.close(); s.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } } Lenke til kommentar
Drømmemannen Skrevet 8. desember 2006 Del Skrevet 8. desember 2006 Husk at du har en løkke der som itererer over alle verdiene du henter ut fra databasen. Så for hver linje som hentes ut kommer enten alle verdiene eller "Kunde ikke funnet". Har du to linjer i databasen og den ene slår ut i if-testen og den andre ikke får alle verdiene til den første og "Kunde ikke funnet" på den andre. Lenke til kommentar
Epixx Skrevet 8. desember 2006 Del Skrevet 8. desember 2006 (endret) Prøv å legge til en boolean som sjekker om ting er blitt skrevet ut? Endret 8. desember 2006 av Thomas` Lenke til kommentar
eshas Skrevet 9. desember 2006 Forfatter Del Skrevet 9. desember 2006 (endret) Prøv å legge til en boolean som sjekker om ting er blitt skrevet ut? 7458767[/snapback] Som sagt jeg er nybegynner i java Hvordan legger jeg en boolean? Nå har jeg: rs.close(); s.close(); con.close(); foran else begynner og da er halvparten av problemet løst. Nå får jeg ikke "Kunde ikke funnet" når if inntrefer. Men jeg får fortsatt flere linjer"Kunde ikke funnet" når else inntrefer. Endret 9. desember 2006 av eshas Lenke til kommentar
pgdx Skrevet 9. desember 2006 Del Skrevet 9. desember 2006 Tror han mente noe ala dette: boolean erSkrevetUt = false; if (rs.getString("epost").equalsIgnoreCase(request.getParameter("epost"))) { out.println("<BODY>\n" + "<H2 ALIGN=left>" + title + "</H1>\n" + "<OL>\n" + " <LO> Henvendelse fra: " + request.getParameter("epost") + "\n" + " <DT>Hei: " + request.getParameter("navn") + "\n" + " <DT>Din henvendelse: " + request.getParameter("klage") + "\n" + " <DT>Henvendelsen din blir behandlet snart"+ "<DL>\n"); erSkrevetUt = true; } if (!erSkrevetUt) { out.println("Kunde ikke funnet"); } Lenke til kommentar
eshas Skrevet 9. desember 2006 Forfatter Del Skrevet 9. desember 2006 (endret) Tror han mente noe ala dette: boolean erSkrevetUt = false; if (rs.getString("epost").equalsIgnoreCase(request.getParameter("epost"))) { out.println("<BODY>\n" + "<H2 ALIGN=left>" + title + "</H1>\n" + "<OL>\n" + " <LO> Henvendelse fra: " + request.getParameter("epost") + "\n" + " <DT>Hei: " + request.getParameter("navn") + "\n" + " <DT>Din henvendelse: " + request.getParameter("klage") + "\n" + " <DT>Henvendelsen din blir behandlet snart"+ "<DL>\n"); erSkrevetUt = true; } if (!erSkrevetUt) { out.println("Kunde ikke funnet"); } 7461208[/snapback] Tusen takk. Løsningen ble slik: while (rs.next()) { boolean erSkrevetUt = false; if (rs.getString("epost").equalsIgnoreCase(request.getParameter("epost"))) { out.println("<BODY>\n" + "<H2 ALIGN=left>" + title + "</H1>\n" + "<OL>\n" + " <LO> Henvendelse fra: " + request.getParameter("epost") + "\n" + " <DT>Hei: " + request.getParameter("navn") + "\n" + " <DT>Din henvendelse: " + request.getParameter("klage") + "\n" + " <DT>Henvendelsen din blir behandlet snart"+ "<DL>\n"); erSkrevetUt = true; //con.commit(); // Clean up after ourselves rs.close(); s.close(); } if (!erSkrevetUt) { out.println("Kunde ikke funnet"); //Close the connection con.close(); [/code] Endret 9. desember 2006 av eshas Lenke til kommentar
Epixx Skrevet 9. desember 2006 Del Skrevet 9. desember 2006 Var det jeg mente ja, beklager at jeg ikke gidde tips til kode, var litt opptatt Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå