webForumDet fria alternativet

Vad är fel?

3 svar · 236 visningar · startad av tosses

tossesMedlem sedan aug. 2003190 inlägg
#1

Jag har skrivit en if sats som inte funkar.
Det jag vill göra är: Om anv är tom, alltså, finns ingen användare så ska jag redirecta till en annan adress.

if (rslt5.getString("anv").equals("")){
response.sendRedirect("http://tomas/ftg");
}

Jag har provat
if (rslt5.getString("anv").equals("null")){

if (rslt5.getString("anv").equals("NULL")){

if (rslt5.getString("anv").equals(null)){

men inget hjälper! :(

HJÄLP

/Tomas

LimeMedlem sedan sep. 2001961 inlägg
#2

Vad är rslt5 för typ av objekt?

Nomalt så gör returnerar en getString() en instans av klassen String, eller null om det inte finns något så du borde nog skriva

if(rslt5.getString("anv") == null) {

}

Att använda .equals förustätter ju att du har en instans av objektet...

tossesMedlem sedan aug. 2003190 inlägg
#3

Så här ser koden ut

<% String ip, user;
ip = request.getRemoteAddr();
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection visaConn5 = DriverManager.getConnection("jdbc:mysql:///steget?user=hmm&password=hmm");
Statement visaStmt5 = visaConn5.createStatement();
String visaQr5 = "SELECT * from anvip where ip='"+ip+"'";
ResultSet rslt5 = visaStmt5.executeQuery(visaQr5);
while(rslt5.next()){
user = rslt5.getString("anv");
session.setAttribute("ipadd", ip);
session.setAttribute("anvn", user);
if (¨rslt5.getString("anv")==null){
response.sendRedirect("http://tomas/ftg");
}
}

rslt5.close();
visaConn5.close();
visaStmt5.close();
%>

om jag lyfter ut if satsen utanför while så verkar det hända nåt men då får jag stället:

Generated servlet error:
[javac] Since fork is true, ignoring compiler setting.
[javac] Compiling 1 source file
[javac] Since fork is true, ignoring compiler setting.
[javac] C:\Tomcat 4.1\work\Standalone\localhost\ftg2\index_jsp.java:59: variable user might not have been initialized
[javac] if (user==null){
[javac] ^
[javac] 1 error

koden vid utlyft if:

<% String ip, user;
ip = request.getRemoteAddr();
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection visaConn5 = DriverManager.getConnection("jdbc:mysql:///steget?user=hmm&password=hmm");
Statement visaStmt5 = visaConn5.createStatement();
String visaQr5 = "SELECT * from anvip where ip='"+ip+"'";
ResultSet rslt5 = visaStmt5.executeQuery(visaQr5);
while(rslt5.next()){
user = rslt5.getString("anv");
session.setAttribute("ipadd", ip);
session.setAttribute("anvn", user);
}
if (user==null){
response.sendRedirect("http://tomas/ftg");
}
rslt5.close();
visaConn5.close();
visaStmt5.close();
%>

tossesMedlem sedan aug. 2003190 inlägg
#4

Jag hittare felet tror jag.

<% String ip="", user="";
ip = request.getRemoteAddr();
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection visaConn5 = DriverManager.getConnection("jdbc:mysql:///steget?user=hmm&password=hmm");
Statement visaStmt5 = visaConn5.createStatement();
String visaQr5 = "SELECT * from anvip where ip='"+ip+"'";
ResultSet rslt5 = visaStmt5.executeQuery(visaQr5);
while(rslt5.next()){
user = rslt5.getString("anv");
session.setAttribute("ipadd", ip);
session.setAttribute("anvn", user);
}
if (user==""){
response.sendRedirect("http://tomas/ftg");
}
rslt5.close();
visaConn5.close();
visaStmt5.close();
%>

Detta verkar fungera.
När jag skriver String user="";
istället för String user;

/Tomas

124 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)