webForumDet fria alternativet

eof och int

4 svar · 393 visningar · startad av AG

AGMedlem sedan mars 20001 266 inlägg
#1

Har nu två problem att ta itu med.
Jag håller på och bygger upp ett inloggningsscript i java, arbetar mot en databas.

Det jag först försöker göra är att sätta in ett "int"-värde i en session, "user", enligt följande kod praxis:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
int id = rs.getInt(1);
String account = rs.getString(2);
session.setAttribute("user", id);

'Error
/login/inloggad.jsp:40: Incompatible type for method. Can't convert int to java.lang.Object.
session.setAttribute("user", id);

Har försökt på alla möjliga sätt utan att lyckas.

Kommer vi till problem nr2. Vid själva inloggningen kollar systemet om användaren finns i databasen. Om användaren inte finns skall systemet skriva ut ett meddelande, men så blir inte fallet.
Alltså hur skriver jag ut om rs är eof?
Kör med hela koden jag har för närvarande, så kanske folk har lust att förbättra o sånt :)
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
<%@ page language=java %>
<%@ page import='java.sql.*' %>
<%@ page import='javax.sql.*' %>
<%

if (session.getAttribute("user") == null){
String driverName="sun.jdbc.odbc.JdbcOdbcDriver";
String dbUrl="jdbc:odbc:login";

Class.forName(driverName);
Connection db =DriverManager.getConnection(dbUrl,"","");

Statement stmt = db.createStatement();
String query = "SELECT * FROM [login] WHERE [account] = '" + request.getParameter("account") + "' AND [password] = '" + request.getParameter("password") + "' ";
ResultSet rs = stmt.executeQuery(query);

while (rs.next())
{
int id = rs.getInt(1);
String account = rs.getString(2);
session.setAttribute("user", id);
%>
<%=id%><br>
<%=account%><br>
<%=session.getAttribute("user")%>
<%
}
stmt.close();
db.close();

}
else {
%>
Inloggad
<%
}
%>

Tackar
Andreas

[Redigerat av AG den 03 apr 2001]

spangoMedlem sedan juni 20008 205 inlägg
#2

/login/inloggad.jsp:40: Incompatible type for method. Can't convert int to java.lang.Object

Du måste lagra int:en i en wrapperklass:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
session.setAttribute("user", new Integer(id));

Sen kan du plocka ut värdet med dinInteger.intValue().

Hur du kollar om ett ResultSet är tomt finns det flera svar på... den ballaste i min mening är:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
if(!rs.next()){
// Inga matchande rader
} else do {
// Bla bla bla..
} while(rs.next());

... sen så har även ResultSetMetaData lite jox som kan vara till hjälp också...

------------------
Life feeds on life feeds on life feeds on life feeds on life...

AGMedlem sedan mars 20001 266 inlägg
#3

Fungerade alldeles utmärkt, får tacka ödmjukast för det.
Nu över till ännu ett problem. Om man lägger in koden som spango visade i min kod så fungerar det fint när man kommer från sidan med textbox, men hur skall man inkludera sidan som kommer i vanliga fall, om session user har ett värde, koden måste ju skrivas på två ställen isf om man kör med else, eller?

Andreas

spangoMedlem sedan juni 20008 205 inlägg
#4
if(personenÄrInloggad){
// blah blah
} else if(kommerFrånInloggningssidan){
// blaha blaha
} else {
// visa inloggningsformulär/redirecta
}

------------------
Life feeds on life feeds on life feeds on life feeds on life...

AGMedlem sedan mars 20001 266 inlägg
#5

Är ju just det problemet, det enda som skiljer emllan de två fälten när man är inloggad är sättet att hämta från databasen, allyså ena hämtar den där formulären stämemr öerens, på det andra där session user är samma som ett id, sen skall ju informationen presenteras som vanligt.

Andreas

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