PDA

View Full Version : General error


AG
2002-01-29, 22:56
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:[/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], [URL], [EMAILNOTIFY], [SMSNOTIFY], [ICQNOTIFY]) VALUES("+request.getParameter("user")+", '"+request.getParameter("url")+"', "+email+", "+sms+", "+icq+")";
stmt.executeUpdate(query);

stmt.close();
db.close();
response.sendRedirect("inloggad2.jsp");
%>
[/kod]

Är hela koden på insertsidan.

Andreas

sgtpepper
2002-01-29, 23:17
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ö (http://www.eclipse.org) 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.

sgtpepper
2002-01-30, 07:59
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]