Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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
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 av eshas
Lenke til kommentar

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
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 av eshas
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...