jsp - java.sql.SQLException: [Microsoft][ODBC Microsoft Access > Driver] Too few parameters. Expected 1 -
i'm calling inserstudent.jsp
file in action of form addstudent.jsp
want insert data in database.
my database table's structure below:
id|name|rollnumber|phonenumber|studyprogram|status
below code inserstudent.jsp
<%@page contenttype="text/html" pageencoding="utf-8"%> <%@ page import="java.sql.*" %> <!doctype html> <html> <body> <% string nam=request.getparameter("stuname"); string roll=request.getparameter("sturoll"); string phone=request.getparameter("stuphone"); string prog=request.getparameter("stuprogram"); string stats=request.getparameter("stustatus"); class.forname("sun.jdbc.odbc.jdbcodbcdriver"); string url = "jdbc:odbc:stdprojectdatadsn"; connection c = drivermanager.getconnection(url); statement statement = c.createstatement() ; string sql = "insert students (id, name, rollnumber, phonenumber, studyprogram, status )"; sql += "values ( '"+ nam +"','"+ nam +"','"+ roll +"','"+ phone +"','"+ prog +"',"+ stats +" )"; statement.execute ( sql ); c.close(); response.sendredirect("manageallstudent.jsp"); %> </body> </html>
this results in following exception:
http status 500
type exception report
message
description server encountered internal error () prevented fulfilling request.
exception
org.apache.jasper.jasperexception: exception occurred processing jsp page /web/inserstudent.jsp @ line 27
24: statement statement = c.createstatement() ;
25: string sql = "insert students (id, name, rollnumber, phonenumber, studyprogram, status )";
26: sql += "values ( '"+ nam +"','"+ nam +"','"+ roll +"','"+ phone +"','"+ prog +"',"+ stats +" )";27: statement.execute ( sql );
28: c.close(); 29: 30: response.sendredirect("manageallstudent.jsp");stacktrace: org.apache.jasper.servlet.jspservletwrapper.handlejspexception(jspservletwrapper.java:521) org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:412) org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:313) org.apache.jasper.servlet.jspservlet.service(jspservlet.java:260)
root cause
javax.servlet.servletexception: java.sql.sqlexception: [microsoft][odbc microsoft access > driver] few parameters. expected 1. note full stack trace of root cause available in apache tomcat/6.0.35 logs.javax.servlet.http.httpservlet.service(httpservlet.java:717)
what missing or doing wrong? in showallstudent.jsp
page shows me data database use same script.
you shouldn't write java code in jsp
(read faq - how avoid java code in jsp). must have add servlet
perform database operations.
apart have learn how jdbc api works , @balusc commented code victim of sql injection vulnerability. avoid sql injection, use prepreadstatement (parameterized query).
connection cn=null; preparedstatement ps=null; class.forname("sun.jdbc.odbc.jdbcodbcdriver"); string url = "jdbc:odbc:stdprojectdatadsn"; connection c = drivermanager.getconnection(url); try{ string sql="insert students (id,name,rollnumber,phonenumber,studyprogram,status) values (?,?,?,?,?,?)"; ps=cn.preparestatement(sql); ps.setint(1,10); ps.setstring(2,nam); ... ps.executeupdate() }catch(sqlexception ex){ }finally{ if(ps!=null){ try { ps.close(); } catch(exception ex) {} } if(cn!=null){ try { cn.close(); } catch(exception ex) {} } }
ps: in case column id
autogenerate number not include in column set.
string sql="insert students (name,rollnumber,phonenumber,studyprogram,status) values (?,?,?,?,?)";
Comments
Post a Comment