webForumDet fria alternativet

Vad är fel?

Java

3 svar · 238 visningar · startad av tosses

Medlem sedan aug. 2003190 inlägg
Frågan#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

Medlem 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...

Medlem 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();
%>

Medlem 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

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)