General error

Java

2 svar · 453 visningar · startad av AG

Medlem sedan mars 20001 266 inlägg
Trådstart#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.

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);
         }
      }
270 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)