webForumDet fria alternativet

General error

Java

2 svar · 442 visningar · startad av AG

Medlem sedan mars 20001 266 inlägg
Frågan#1

Har problem. När jag skall sätta in värden på en sida får jag "General error
"
<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.*' %>
<%
if (session.getAttribute("user") == null){
response.sendRedirect("index.jsp?response=session-timeout");
}

String driverName="sun.jdbc.odbc.JdbcOdbcDriver";
String dbUrl="jdbc:odbc:dbCheck";
Class.forName(driverName);
Connection db =DriverManager.getConnection(dbUrl,"","");

int email;
if (request.getParameter("e-mail") != null){
email = (int) 1;
}
else {
email = (int) 0;
}

int sms;
if (request.getParameter("sms") != null){
sms = (int) 1;
}
else {
sms = (int) 0;
}

int icq;
if (request.getParameter("icq") != null){
icq = (int) 1;
}
else {
icq = (int) 0;
}

Statement stmt = db.createStatement();
String query = "INSERT INTO [URLS] ([IDUSER], , [EMAILNOTIFY], [SMSNOTIFY], [ICQNOTIFY]) VALUES("+request.getParameter("user")+", '"+request.getParameter("url")+"', "+email+", "+sms+", "+icq+")";
stmt.executeUpdate(query);

stmt.close();
db.close();
response.sendRedirect("inloggad2.jsp");
%>

Är hela koden på insertsidan.

Andreas

Medlem sedan apr. 20007 588 inlägg
#2

Jag kan inte direkt se vad som är fel men ett allmänt tips är att inte lägga denna typ av logik på en JSP-sida. Lägg det i en böna och använd en lämplig utvecklingsmiljö med en bra integerad debugger, det underlättar buggletning något enormt att kunna sätta en brytpunkt i koden och sen stega sig igenom det felande partiet och inspektera vad som händer.

Första steget nu är att fånga undantag för att indentifiera vart felet sker. Det är alltid en bra idé att fånga upp undantag och ha någon slags felloggning. Bl.a så slänger Class.forName() ett ClassNotFoundException om inte JDBC-klassen gick att hitta, fånga även SQLException vid dina databasanrop.

Ett tips är också att använda PreparedStatements för insättningar i databas så slipper du problem med bl.a enkelfnuttar och liknande.

------------------
Peer's Law
The solution to a problem changes the problem.

Medlem sedan apr. 20007 588 inlägg
#3

Kom på en till grej, SQLException kan vara en "kedja" med Exceptions så du kanske kan få fram mer informativ info genom att gå igenom kedjan av SQLExceptions genom metoden getNextException():

      try {
            ... databasjobb ...
      }
      catch(SQLException ex) {
          System.err.println("Root-exception: "+ex);
          while((ex = ex.getNextException()) != null) {
             System.err.println("Chained exception: " + ex);
         }
      }

------------------
Peer's Law
The solution to a problem changes the problem.

[Redigerat av sgtpepper den 30 jan 2002]

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