Java If/Else Bedingung funktioniert nicht!

easyCoder

Neues Mitglied
If/Else Bedingung:
<%! String driverName = "com.mysql.jdbc.Driver";%>
<%!String url = "jdbc:mysql://localhost:3306/biointeractive";%>
<%!String user = "admin";%>
<%!String psw = "artechsarsi";%>
<%
String id = request.getParameter("gruppeid");
String abteilung = request.getParameter("id");
Statement statement = null;
ResultSet resultSet = null;
Connection con = null;
PreparedStatement ps = null;
try {
  Class.forName(driverName);
  con = DriverManager.getConnection(url, user, psw);
  statement = con.createStatement();
  String sql2 = "select abteilungid from gruppeeintrag where abteilungid like '" + abteilung + "'";
  resultSet = statement.executeQuery(sql2);
  while (resultSet.next()) {
    String idabt = resultSet.getString("abteilungid");

    if (idabt != null) {
      out.print("Diese Abteilung gehört schon einer Gruppe an!");
    }

    else {
      String sql = "Insert gruppeeintrag set gruppeid=?,abteilungid=?";
      ps = con.prepareStatement(sql);
      ps.setString(1, id);
      ps.setString(2, abteilung);
      int i = ps.executeUpdate();
      if (i > 0) {
        response.sendRedirect("close.html");
      } else {
        out.print("Problem!");
      }
    }
  }
}

catch (SQLException sql2) {
  request.setAttribute("error", sql2);
  out.println(sql2);
}

Wenn idabt nicht null ist gibt es auch out.print aus, jedoch wenn idapt null ist(else Bedingung) wird der Eintrag in die MySQL DB nicht gemacht und das Fenster bleibt leer, auch wird keine Fehlermeldung in der Konsole ausgegeben!
 

easyCoder

Neues Mitglied
Lösung!:
if (idabt != null) {
  out.print("Diese Abteilung gehört schon einer Gruppe an!");
  return;
}
}
Class.forName(driverName2);
con2 = DriverManager.getConnection(url, user, psw);
String sql = "Insert gruppeeintrag set gruppeid=?,abteilungid=?";
ps = con2.prepareStatement(sql);
ps.setString(1, id);
ps.setString(2, abteilung);
int i = ps.executeUpdate();

response.sendRedirect("close.html");
}

Habe es selber lösen können dieser Code funktioniert jetzt!
 

Mat

Aktives Mitglied
Finde ich gut, dass du eine Lösung gepostet hast.

Das ist nur zum Rumprobieren und kein Projekt, oder? Ich frage, weil es aussieht, als könnte man das leicht per SQL Injection angreifen.
 

aligator

Neues Mitglied
Nein, im Gegenteil, das ist sogar gut gemacht, da er Prepared Statements benutzt, die (unter anderem) genau dafür da sind SQL injections zu verhindern, weil die eingabeparameter durch ps.setString automatisch von gefährlichem code escaped werden.

Zumindest der code im zweiten Post. Der im ersten ist tatsächlich durch das '" + abteilung + "' angreifbar.

@easyCoder
Also wichtig für dich: Nutze immer Prepared statements. Baue niemals die Usereingaben per '+' in den SQL String ein.
 
Oben Unten